Dropstone Docs

Tastenkürzel

Passen Sie Ihre Tastaturkürzel an.

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

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

Das ältere Feld keybinds wird weiterhin als Migrations-Fallback akzeptiert, ist aber veraltet. Wenn keymap vorhanden ist, ignoriert Dropstone keybinds.


Leader-Taste

Dropstone verwendet für viele Kürzel eine leader-Taste. Dadurch werden Konflikte in Ihrem Terminal vermieden.

Standardmäßig ist ctrl+x die Leader-Taste, und Leader-Kürzel erfordern, dass Sie zuerst die Leader-Taste und dann das Kürzel drücken. 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.


Minimalbeispiel

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

Struktur der Keymap

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

FeldBeschreibung
leaderDie Taste, die für <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"]
      }
    }
  }
}

Für fortgeschrittene Fälle verwenden Sie 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 benutzerorientierten 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",
        "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"
      }
    }
  }
}

Legacy-Keybinds

keybinds ist veraltet. Es wird beibehalten, damit bestehende Konfigurationen weiterhin funktionieren, während Benutzer auf 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:

Auf nativem Windows sind die Standardwerte für Rückgängig und Terminal-Anhalten sowohl für keymap als auch für Legacy-keybinds unterschiedlich:

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

Integrierte Eingabe-Kürzel

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

KürzelAktion
ctrl+aZum Anfang der aktuellen Zeile wechseln
ctrl+eZum Ende der aktuellen Zeile wechseln
ctrl+bCursor ein Zeichen zurückbewegen
ctrl+fCursor ein Zeichen vorwärtsbewegen
alt+bCursor ein Wort zurückbewegen
alt+fCursor ein Wort vorwärtsbewegen
ctrl+dZeichen unter dem Cursor löschen
ctrl+kBis zum Zeilenende löschen
ctrl+uBis zum Zeilenanfang löschen
ctrl+wVorheriges Wort löschen
alt+dNächstes Wort löschen
ctrl+tZeichen vertauschen
ctrl+gPopovers abbrechen / laufende Antwort abbrechen

Umschalt+Eingabetaste

Einige Terminals senden Modifikatortasten mit der Eingabetaste nicht standardmäßig. Möglicherweise müssen Sie Ihr Terminal so konfigurieren, dass Umschalt+Eingabetaste 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 actions-Array auf oberster Ebene hinzu:

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

Fügen Sie dies zum keybindings-Array auf oberster Ebene hinzu:

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

Speichern Sie die Datei und starten Sie das Windows-Terminal neu oder öffnen Sie eine neue Registerkarte.

Strg+I