Raccourcis clavier
Personnalisez vos raccourcis clavier.
Personnalisez les raccourcis clavier de Dropstone avec keymap dans tui.json.
keymap est fusionné avec les valeurs par défaut intégrées, vous n'avez donc besoin de configurer que les raccourcis que vous souhaitez modifier.
L'ancien champ keybinds est toujours accepté comme solution de repli pour la migration, mais il est obsolète. Si keymap est présent, Dropstone ignore keybinds.
Touche leader
Dropstone utilise une touche leader pour de nombreux raccourcis. Cela évite les conflits dans votre terminal.
Par défaut, ctrl+x est la touche leader et les raccourcis leader nécessitent d'appuyer d'abord sur la touche leader, puis sur le raccourci. Par exemple, pour démarrer une nouvelle session, appuyez d'abord sur ctrl+x, puis sur n.
Vous n'êtes pas obligé d'utiliser une touche leader, mais nous le recommandons.
Exemple minimal
{
"$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"]
}
}
}
}
Structure de keymap
keymap.sections est regroupé par zone sémantique. Chaque section contient des noms de commandes et la séquence de touches qui les déclenche.
| Champ | Description |
|---|---|
leader | La touche utilisée pour les séquences <leader>. Par défaut ctrl+x. |
leader_timeout | Durée pendant laquelle Dropstone attend la touche suivante après la touche leader, en millisecondes. Par défaut 2000. |
sections | Une correspondance des zones d'interface utilisateur avec les liaisons de commandes. |
Valeurs de liaison
Une chaîne peut contenir un raccourci ou plusieurs raccourcis séparés par des virgules. Vous pouvez également utiliser un tableau pour plusieurs raccourcis, ou "none"/false pour désactiver une commande.
{
"$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"]
}
}
}
}
Pour les cas avancés, utilisez un objet avec key, event, preventDefault ou fallthrough.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keymap": {
"sections": {
"prompt": {
"prompt.paste": {
"key": "ctrl+v",
"preventDefault": false
}
}
}
}
}
Référence de keymap
Voici les commandes destinées à l'utilisateur que vous pouvez lier. Les commandes définies sur "none" sont disponibles pour la liaison mais désactivées par défaut.
{
"$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"
}
}
}
}
Anciens keybinds
keybinds est obsolète. Il est conservé pour que les configurations existantes continuent de fonctionner pendant que les utilisateurs migrent vers keymap.
N'utilisez keybinds que lorsque keymap n'est pas présent. Si les deux champs sont définis, keymap a priorité et keybinds sont ignorés pour la résolution des raccourcis.
{
"$schema": "https://dropstone.io/schema/tui.json",
"keybinds": {
"command_list": "ctrl+p",
"session_new": "<leader>n",
"session_compact": "<leader>c"
}
}
Valeurs par défaut Windows:
Sur Windows natif, les valeurs par défaut pour annuler et suspendre le terminal sont différentes pour keymap et les anciens keybinds :
input.undoest défini par défaut surctrl+z,ctrl+-,super+zlorsqu'il n'est pas explicitement configuré (la liaisonctrl+zest ajoutée car les terminaux Windows ne prennent pas en charge la suspension POSIX).terminal.suspendest désactivé car les terminaux Windows natifs ne prennent pas en charge la suspension POSIX.
Raccourcis de saisie intégrés
L'entrée de l'invite prend en charge les raccourcis courants de style Readline/Emacs pour l'édition de texte. Ce sont les valeurs par défaut intégrées : vous pouvez les remplacer dans la section input de tui.json ci-dessus.
| Raccourci | Action |
|---|---|
ctrl+a | Aller au début de la ligne courante |
ctrl+e | Aller à la fin de la ligne courante |
ctrl+b | Reculer le curseur d'un caractère |
ctrl+f | Avancer le curseur d'un caractère |
alt+b | Reculer le curseur d'un mot |
alt+f | Avancer le curseur d'un mot |
ctrl+d | Supprimer le caractère sous le curseur |
ctrl+k | Supprimer jusqu'à la fin de la ligne |
ctrl+u | Supprimer jusqu'au début de la ligne |
ctrl+w | Supprimer le mot précédent |
alt+d | Supprimer le mot suivant |
ctrl+t | Transposer les caractères |
ctrl+g | Annuler les popovers / interrompre la réponse en cours |
Shift+Entrée
Certains terminaux n'envoient pas les touches modificatrices avec Entrée par défaut. Vous devrez peut-être configurer votre terminal pour envoyer Shift+Entrée comme séquence d'échappement.
Windows Terminal
Ouvrez votre settings.json à l'emplacement :
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
Ajoutez ceci au tableau actions au niveau racine :
"actions": [
{
"command": {
"action": "sendInput",
"input": "\u001b[13;2u"
},
"id": "User.sendInput.ShiftEnterCustom"
}
]
Ajoutez ceci au tableau keybindings au niveau racine :
"keybindings": [
{
"keys": "shift+enter",
"id": "User.sendInput.ShiftEnterCustom"
}
]
Enregistrez le fichier et redémarrez Windows Terminal ou ouvrez un nouvel onglet.