Dropstone Docs

Tastenkombinationen

Passen Sie Ihre Tastaturkürzel an.

Passen Sie die Tastaturkürzel von Dropstone mit keymap in tui.json an.

keymap wird mit den integrierten Standardwerten zusammengeführt, daher müssen Sie nur die Kürzel konfigurieren, die Sie ändern möchten.

Das ältere Feld keybinds wird weiterhin als Fallback für die Migration akzeptiert, ist aber veraltet. Wenn keymap vorhanden ist, ignoriert Dropstone keybinds.


Leader-Taste

Dropstone verwendet eine leader-Taste für viele Kürzel. Dies vermeidet Konflikte in Ihrem Terminal.

Standardmäßig ist ctrl+x die Leader-Taste, und Leader-Kürzel erfordern, dass Sie zuerst die Leader-Taste drücken und dann das Kürzel. Um beispielsweise eine neue Sitzung zu starten, drücken Sie zuerst ctrl+x und dann n.

Sie müssen keine Leader-Taste verwenden, aber wir empfehlen es.


Minimales Beispiel

{
  "$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"]
      }
    }
  }
}

Keymap-Struktur

keymap.sections ist nach semantischen Bereichen gruppiert. Jeder Bereich enthält Befehlsnamen und die Tastenfolge, die sie auslöst.

FeldBeschreibung
leaderDie Taste, die von <leader>-Sequenzen verwendet wird. Standard ist ctrl+x.
leader_timeoutWie lange Dropstone nach der Leader-Taste auf die nächste Taste wartet, in Millisekunden. Standard ist 2000.
sectionsEine Zuordnung von UI-Bereichen zu Befehlsbindungen.

Bindungswerte

Ein String kann ein Kürzel oder mehrere durch Kommas getrennte Kürzel enthalten. Sie können auch ein Array für mehrere Kürzel verwenden oder "none"/false, um einen Befehl zu deaktivieren.

{
  "$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"]
      }
    }
  }
}

Verwenden Sie für fortgeschrittene Fälle ein Objekt mit key, event, preventDefault oder fallthrough.

{
  "$schema": "https://dropstone.io/schema/tui.json",
  "keymap": {
    "sections": {
      "prompt": {
        "prompt.paste": {
          "key": "ctrl+v",
          "preventDefault": false
        }
      }
    }
  }
}

Keymap-Referenz

Dies sind die benutzerdefinierten Befehle, die Sie binden können. Befehle, die auf "none" gesetzt sind, können gebunden werden, sind aber standardmäßig deaktiviert.

{
  "$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"
      }
    }
  }
}

Legacy keybinds

keybinds ist veraltet. Es wird beibehalten, damit vorhandene Konfigurationen weiterhin funktionieren, während Benutzer zu keymap migrieren.

Verwenden Sie keybinds nur, wenn keymap nicht vorhanden ist. Wenn beide Felder gesetzt sind, gewinnt keymap und keybinds werden für die Kürzelauflösung ignoriert.

{
  "$schema": "https://dropstone.io/schema/tui.json",
  "keybinds": {
    "command_list": "ctrl+p",
    "session_new": "<leader>n",
    "session_compact": "<leader>c"
  }
}

Windows-Standardwerte:

Unter nativem Windows unterscheiden sich die Standardwerte für Rückgängigmachen und Terminal-Suspend für sowohl keymap als auch das Legacy-keybinds:

  • input.undo wird standardmäßig auf ctrl+z,ctrl+-,super+z gesetzt, wenn nicht explizit konfiguriert (die ctrl+z-Bindung wird hinzugefügt, da Windows-Terminals POSIX-Suspend nicht unterstützen).
  • terminal.suspend ist deaktiviert, da native Windows-Terminals POSIX-Suspend nicht unterstützen.

Integrierte Input-Kürzel

Die Prompt-Eingabe unterstützt gängige Readline/Emacs-ähnliche Kürzel zum Bearbeiten von Text. Dies sind integrierte Standardwerte: Sie können sie im Abschnitt input von tui.json oben überschreiben.

KürzelAktion
ctrl+aZum Anfang der aktuellen Zeile gehen
ctrl+eZum Ende der aktuellen Zeile gehen
ctrl+bCursor ein Zeichen zurück bewegen
ctrl+fCursor ein Zeichen vorwärts bewegen
alt+bCursor ein Wort zurück bewegen
alt+fCursor ein Wort vorwärts bewegen
ctrl+dZeichen unter dem Cursor löschen
ctrl+kBis zum Ende der Zeile löschen
ctrl+uBis zum Anfang der Zeile löschen
ctrl+wVorheriges Wort löschen
alt+dNächstes Wort löschen
ctrl+tZeichen transponieren
ctrl+gPopovers abbrechen / laufende Antwort

Shift+Enter

Einige Terminals senden standardmäßig keine Modifiziertasten mit Enter. Möglicherweise müssen Sie Ihr Terminal so konfigurieren, dass Shift+Enter als Escape-Sequenz gesendet wird.

Windows Terminal

Öffnen Sie Ihre settings.json unter:

%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json

Fügen Sie dies zum Root-Level-Array actions hinzu:

"actions": [
  {
    "command": {
      "action": "sendInput",
      "input": "\u001b[13;2u"
    },
    "id": "User.sendInput.ShiftEnterCustom"
  }
]

Fügen Sie dies zum Root-Level-Array keybindings hinzu:

"keybindings": [
  {
    "keys": "shift+enter",
    "id": "User.sendInput.ShiftEnterCustom"
  }
]

Speichern Sie die Datei und starten Sie Windows Terminal neu oder öffnen Sie einen neuen Tab.

Strg+I