Keybinds
Personalizza le scorciatoie da tastiera.
Personalizza le scorciatoie da tastiera di Dropstone con keymap in tui.json.
keymap viene unito alle impostazioni predefinite integrate, quindi devi configurare solo le scorciatoie che vuoi cambiare.
Il vecchio campo keybinds è ancora accettato come fallback di migrazione, ma è deprecato. Se keymap è presente, Dropstone ignora keybinds.
Tasto leader
Dropstone usa un tasto leader per molte scorciatoie. Questo evita conflitti nel tuo terminale.
Per impostazione predefinita, ctrl+x è il tasto leader e le scorciatoie leader richiedono di premere prima il tasto leader e poi la scorciatoia. Ad esempio, per avviare una nuova sessione premi prima ctrl+x e poi n.
Non sei obbligato a usare un tasto leader, ma lo consigliamo.
Esempio minimo
{
"$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"]
}
}
}
}
Struttura di keymap
keymap.sections è raggruppato per area semantica. Ogni sezione contiene nomi di comandi e la sequenza di tasti che li attiva.
| Campo | Descrizione |
|---|---|
leader | Il tasto usato dalle sequenze <leader>. Predefinito: ctrl+x. |
leader_timeout | Per quanto tempo Dropstone attende il tasto successivo dopo il tasto leader, in millisecondi. Predefinito: 2000. |
sections | Una mappa delle aree dell'interfaccia ai binding dei comandi. |
Valori di binding
Una stringa può contenere una scorciatoia o più scorciatoie separate da virgole. Puoi anche usare un array per più scorciatoie, oppure "none"/false per disabilitare 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"]
}
}
}
}
Per casi avanzati, usa un oggetto con key, event, preventDefault o fallthrough.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keymap": {
"sections": {
"prompt": {
"prompt.paste": {
"key": "ctrl+v",
"preventDefault": false
}
}
}
}
}
Riferimento keymap
Questi sono i comandi rivolti all'utente che puoi associare. I comandi impostati su "none" sono disponibili per l'associazione ma disabilitati per impostazione predefinita.
{
"$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",
"workspace.open": "ctrl+o,<leader>o",
"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 legacy
keybinds è deprecato. È mantenuto per consentire alle configurazioni esistenti di continuare a funzionare mentre gli utenti migrano a keymap.
Usa keybinds solo quando keymap non è presente. Se entrambi i campi sono impostati, keymap ha la precedenza e keybinds vengono ignorati per la risoluzione delle scorciatoie.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keybinds": {
"command_list": "ctrl+p",
"session_new": "<leader>n",
"session_compact": "<leader>c"
}
}
Impostazioni predefinite di Windows:
Su Windows nativo, le impostazioni predefinite per annulla e sospensione del terminale sono diverse sia per keymap che per keybinds legacy:
input.undoè predefinito actrl+z,ctrl+-,super+zquando non è configurato esplicitamente (il bindingctrl+zviene aggiunto perché i terminali Windows non supportano la sospensione POSIX).terminal.suspendè disabilitato perché i terminali Windows nativi non supportano la sospensione POSIX.
Scorciatoie di input integrate
L'input del prompt supporta le comuni scorciatoie in stile Readline/Emacs per modificare il testo. Queste sono le impostazioni predefinite integrate: puoi sovrascriverle nella sezione input di tui.json qui sopra.
| Scorciatoia | Azione |
|---|---|
ctrl+a | Vai all'inizio della riga corrente |
ctrl+e | Vai alla fine della riga corrente |
ctrl+b | Sposta il cursore indietro di un carattere |
ctrl+f | Sposta il cursore avanti di un carattere |
alt+b | Sposta il cursore indietro di una parola |
alt+f | Sposta il cursore avanti di una parola |
ctrl+d | Elimina il carattere sotto il cursore |
ctrl+k | Elimina fino alla fine della riga |
ctrl+u | Elimina fino all'inizio della riga |
ctrl+w | Elimina la parola precedente |
alt+d | Elimina la parola successiva |
ctrl+t | Trasponi i caratteri |
ctrl+g | Annulla i popover / interrompi la risposta in corso |
Shift+Enter
Alcuni terminali non inviano i tasti modificatori con Invio per impostazione predefinita. Potresti dover configurare il tuo terminale per inviare Shift+Enter come sequenza di escape.
Windows Terminal
Apri il tuo settings.json in:
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
Aggiungi questo all'array actions a livello di root:
"actions": [
{
"command": {
"action": "sendInput",
"input": "\u001b[13;2u"
},
"id": "User.sendInput.ShiftEnterCustom"
}
]
Aggiungi questo all'array keybindings a livello di root:
"keybindings": [
{
"keys": "shift+enter",
"id": "User.sendInput.ShiftEnterCustom"
}
]
Salva il file e riavvia Windows Terminal oppure apri una nuova scheda.