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 secours pour la migration mais est déprécié. 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 vous obligent à d'abord appuyer sur la touche leader, puis sur le raccourci. Par exemple, pour démarrer une nouvelle session, vous appuyez d'abord sur ctrl+x, puis sur n.
Vous n'avez pas besoin d'utiliser une touche leader, mais nous vous 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 groupé 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 par 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 carte des zones d'interface utilisateur aux 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 keymap
Ce sont les commandes accessibles à l'utilisateur que vous pouvez lier. Les commandes définies sur "none" sont disponibles à 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",
"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 hérités
keybinds est déprécié. Il est conservé pour que les configurations existantes continuent de fonctionner pendant que les utilisateurs migrent vers keymap.
Utilisez uniquement keybinds quand keymap n'est pas présent. Si les deux champs sont définis, keymap gagne 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 keybinds hérité :
input.undopar défautctrl+z,ctrl+-,super+zquand non explicitement configuré (la liaisonctrl+zest ajoutée car les terminaux Windows ne supportent pas la suspension POSIX).terminal.suspendest désactivé car les terminaux Windows natifs ne supportent pas la suspension POSIX.
Raccourcis d'entrée intégrés
L'entrée de l'invite supporte les raccourcis courants de style Readline/Emacs pour éditer du texte. Ce sont des 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 actuelle |
ctrl+e | Aller à la fin de la ligne actuelle |
ctrl+b | Déplacer le curseur d'un caractère en arrière |
ctrl+f | Déplacer le curseur d'un caractère en avant |
alt+b | Déplacer le curseur d'un mot en arrière |
alt+f | Déplacer le curseur d'un mot en avant |
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 / abandonner la réponse en cours |
Shift+Enter
Certains terminaux n'envoient pas les touches de modification avec Entrée par défaut. Vous devrez peut-être configurer votre terminal pour envoyer Shift+Enter comme séquence d'échappement.
Windows Terminal
Ouvrez votre settings.json à :
%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.