Atajos de teclado
Personaliza tus atajos de teclado.
Personaliza los atajos de teclado de Dropstone con keymap en tui.json.
keymap se fusiona con los valores predeterminados integrados, por lo que solo necesitas configurar los atajos que deseas cambiar.
El campo keybinds más antiguo sigue siendo aceptado como alternativa de migración pero está deprecado. Si keymap está presente, Dropstone ignora keybinds.
Tecla líder
Dropstone utiliza una tecla leader para muchos atajos. Esto evita conflictos en tu terminal.
Por defecto, ctrl+x es la tecla líder y los atajos de líder requieren que primero presiones la tecla líder y luego el atajo. Por ejemplo, para iniciar una nueva sesión primero presionas ctrl+x y luego presionas n.
No necesitas usar una tecla líder, pero te recomendamos que lo hagas.
Ejemplo mínimo
{
"$schema": "https://dropstone.io/schema/tui.json",
"keymap": {
"leader": "ctrl+x",
"leader_timeout": 2000,
"sections": {
"global": {
"command.palette.show": "ctrl+p",
"session.new": "<leader>n",
"session.list": "<leader>l"
},
"session": {
"session.compact": "<leader>c",
"session.undo": "<leader>u",
"session.redo": "<leader>r"
},
"input": {
"input.submit": "return",
"input.newline": ["shift+return", "ctrl+return", "alt+return", "ctrl+j"]
}
}
}
}
Estructura del mapa de teclas
keymap.sections se agrupa por área semántica. Cada sección contiene nombres de comandos y la secuencia de teclas que los activa.
| Campo | Descripción |
|---|---|
leader | La tecla utilizada por secuencias <leader>. Por defecto es ctrl+x. |
leader_timeout | Cuánto tiempo espera Dropstone por la siguiente tecla después de la tecla líder, en milisegundos. Por defecto es 2000. |
sections | Un mapa de áreas de interfaz a enlaces de comandos. |
Valores de enlace
Una cadena puede contener un atajo o múltiples atajos separados por comas. También puedes usar un array para múltiples atajos, o "none"/false para deshabilitar un comando.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keymap": {
"sections": {
"session": {
"session.compact": "none",
"session.export": "<leader>x,ctrl+shift+x",
"session.copy": ["<leader>y", "ctrl+shift+c"]
}
}
}
}
Para casos avanzados, usa un objeto con key, event, preventDefault, o fallthrough.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keymap": {
"sections": {
"prompt": {
"prompt.paste": {
"key": "ctrl+v",
"preventDefault": false
}
}
}
}
}
Referencia del mapa de teclas
Estos son los comandos visibles para el usuario que puedes enlazar. Los comandos establecidos en "none" están disponibles para enlazar pero deshabilitados por defecto.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keymap": {
"leader": "ctrl+x",
"leader_timeout": 2000,
"sections": {
"global": {
"command.palette.show": "ctrl+p",
"session.list": "<leader>l",
"session.new": "<leader>n",
"model.list": "<leader>m",
"model.cycle_recent": "f2",
"model.cycle_recent_reverse": "shift+f2",
"agent.list": "<leader>a",
"agent.cycle": "tab",
"agent.cycle.reverse": "shift+tab",
"variant.cycle": "ctrl+t",
"variant.list": "none",
"help.show": "none",
"app.exit": "ctrl+c,ctrl+d,<leader>q",
"terminal.suspend": "ctrl+z"
},
"session": {
"session.rename": "ctrl+r",
"session.timeline": "<leader>g",
"session.fork": "none",
"session.compact": "<leader>c",
"session.undo": "<leader>u",
"session.redo": "<leader>r",
"session.sidebar.toggle": "<leader>b",
"session.toggle.conceal": "<leader>h",
"session.page.up": "pageup,ctrl+alt+b",
"session.page.down": "pagedown,ctrl+alt+f",
"session.line.up": "ctrl+alt+y",
"session.line.down": "ctrl+alt+e",
"session.half.page.up": "ctrl+alt+u",
"session.half.page.down": "ctrl+alt+d",
"session.first": "ctrl+g,home",
"session.last": "ctrl+alt+g,end",
"messages.copy": "<leader>y",
"session.copy": "none",
"session.export": "<leader>x",
"session.child.first": "<leader>down",
"session.parent": "up",
"session.child.next": "right",
"session.child.previous": "left"
},
"prompt": {
"prompt.submit": "none",
"prompt.editor": "<leader>e",
"session.interrupt": "escape",
"prompt.clear": "ctrl+c",
"prompt.paste": {
"key": "ctrl+v",
"preventDefault": false
},
"prompt.history.previous": "up",
"prompt.history.next": "down"
},
"autocomplete": {
"prompt.autocomplete.prev": "up,ctrl+p",
"prompt.autocomplete.next": "down,ctrl+n",
"prompt.autocomplete.hide": "escape",
"prompt.autocomplete.select": "return",
"prompt.autocomplete.complete": "tab"
},
"input": {
"input.submit": "return",
"input.newline": "shift+return,ctrl+return,alt+return,ctrl+j",
"input.move.left": "left,ctrl+b",
"input.move.right": "right,ctrl+f",
"input.move.up": "up",
"input.move.down": "down",
"input.select.left": "shift+left",
"input.select.right": "shift+right",
"input.select.up": "shift+up",
"input.select.down": "shift+down",
"input.line.home": "ctrl+a",
"input.line.end": "ctrl+e",
"input.select.line.home": "ctrl+shift+a",
"input.select.line.end": "ctrl+shift+e",
"input.visual.line.home": "alt+a",
"input.visual.line.end": "alt+e",
"input.select.visual.line.home": "alt+shift+a",
"input.select.visual.line.end": "alt+shift+e",
"input.buffer.home": "home",
"input.buffer.end": "end",
"input.select.buffer.home": "shift+home",
"input.select.buffer.end": "shift+end",
"input.delete.line": "ctrl+shift+d",
"input.delete.to.line.end": "ctrl+k",
"input.delete.to.line.start": "ctrl+u",
"input.backspace": "backspace,shift+backspace",
"input.delete": "ctrl+d,delete,shift+delete",
"input.undo": "ctrl+-,super+z",
"input.redo": "ctrl+.,super+shift+z",
"input.word.forward": "alt+f,alt+right,ctrl+right",
"input.word.backward": "alt+b,alt+left,ctrl+left",
"input.select.word.forward": "alt+shift+f,alt+shift+right",
"input.select.word.backward": "alt+shift+b,alt+shift+left",
"input.delete.word.forward": "alt+d,alt+delete,ctrl+delete",
"input.delete.word.backward": "ctrl+w,ctrl+backspace,alt+backspace",
"input.select.all": "super+a"
},
"dialog_select": {
"dialog.select.prev": "up,ctrl+p",
"dialog.select.next": "down,ctrl+n",
"dialog.select.page_up": "pageup",
"dialog.select.page_down": "pagedown",
"dialog.select.home": "home",
"dialog.select.end": "end",
"dialog.select.submit": "return"
},
"dialog_actions": {
"dialog.action.toggle": "space",
"dialog.action.delete": "ctrl+d",
"dialog.action.rename": "ctrl+r"
},
"permission": {
"permission.reject.cancel": "ctrl+c,ctrl+d,<leader>q",
"permission.prompt.escape": "ctrl+c,ctrl+d,<leader>q",
"permission.prompt.fullscreen": "ctrl+f"
},
"question": {
"question.reject": "ctrl+c,ctrl+d,<leader>q",
"question.edit.clear": "ctrl+c"
},
"home_tips": {
"tips.toggle": "<leader>h"
}
}
}
}
Keybinds heredados
keybinds está deprecado. Se mantiene para que las configuraciones existentes continúen funcionando mientras los usuarios migran a keymap.
Solo usa keybinds cuando keymap no esté presente. Si ambos campos están configurados, keymap gana e keybinds se ignoran para la resolución de atajos.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keybinds": {
"command_list": "ctrl+p",
"session_new": "<leader>n",
"session_compact": "<leader>c"
}
}
Valores predeterminados de Windows:
En Windows nativo, los valores predeterminados para deshacer y suspender terminal son diferentes tanto para keymap como para keybinds heredado:
input.undopor defecto esctrl+z,ctrl+-,super+zcuando no está explícitamente configurado (el enlacectrl+zse agrega porque los terminales de Windows no admiten suspensión POSIX).terminal.suspendestá deshabilitado porque los terminales nativos de Windows no admiten suspensión POSIX.
Atajos de entrada integrados
La entrada del prompt admite atajos comunes de estilo Readline/Emacs para editar texto. Estos son valores predeterminados integrados: puedes anularlos en la sección input de tui.json anterior.
| Atajo | Acción |
|---|---|
ctrl+a | Mover al inicio de la línea actual |
ctrl+e | Mover al final de la línea actual |
ctrl+b | Mover cursor un carácter hacia atrás |
ctrl+f | Mover cursor un carácter hacia adelante |
alt+b | Mover cursor una palabra hacia atrás |
alt+f | Mover cursor una palabra hacia adelante |
ctrl+d | Eliminar carácter bajo el cursor |
ctrl+k | Eliminar hasta el final de la línea |
ctrl+u | Eliminar hasta el inicio de la línea |
ctrl+w | Eliminar palabra anterior |
alt+d | Eliminar siguiente palabra |
ctrl+t | Transponer caracteres |
ctrl+g | Cancelar popovers / abortar respuesta |
Shift+Enter
Algunos terminales no envían teclas modificadoras con Enter por defecto. Es posible que necesites configurar tu terminal para enviar Shift+Enter como una secuencia de escape.
Windows Terminal
Abre tu settings.json en:
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
Agrega esto al array actions de nivel raíz:
"actions": [
{
"command": {
"action": "sendInput",
"input": "\u001b[13;2u"
},
"id": "User.sendInput.ShiftEnterCustom"
}
]
Agrega esto al array keybindings de nivel raíz:
"keybindings": [
{
"keys": "shift+enter",
"id": "User.sendInput.ShiftEnterCustom"
}
]
Guarda el archivo y reinicia Windows Terminal o abre una nueva pestaña.