Dropstone Docs

Keybinds

Sesuaikan pintasan keyboard Anda.

Sesuaikan pintasan keyboard Dropstone dengan keymap di tui.json.

keymap digabungkan dengan default bawaan, jadi Anda hanya perlu mengonfigurasi pintasan yang ingin diubah.

Field keybinds yang lebih lama masih diterima sebagai fallback migrasi tetapi sudah usang. Jika keymap ada, Dropstone mengabaikan keybinds.


Leader key

Dropstone menggunakan leader key untuk banyak pintasan. Ini menghindari konflik di terminal Anda.

Secara default, ctrl+x adalah leader key dan pintasan leader memerlukan Anda untuk terlebih dahulu menekan leader key dan kemudian menekan pintasan. Misalnya, untuk memulai sesi baru Anda terlebih dahulu menekan ctrl+x dan kemudian menekan n.

Anda tidak perlu menggunakan leader key, tetapi kami merekomendasikan untuk melakukannya.


Contoh 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"]
      }
    }
  }
}

Struktur keymap

keymap.sections dikelompokkan berdasarkan area semantik. Setiap bagian berisi nama perintah dan urutan tombol yang memicunya.

FieldDeskripsi
leaderTombol yang digunakan oleh urutan <leader>. Default ke ctrl+x.
leader_timeoutBerapa lama Dropstone menunggu tombol berikutnya setelah leader key, dalam milidetik. Default ke 2000.
sectionsPeta area UI ke binding perintah.

Nilai binding

String dapat berisi satu pintasan atau beberapa pintasan yang dipisahkan koma. Anda juga dapat menggunakan array untuk beberapa pintasan, atau "none"/false untuk menonaktifkan perintah.

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

Untuk kasus lanjutan, gunakan objek dengan key, event, preventDefault, atau fallthrough.

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

Referensi keymap

Ini adalah perintah yang menghadap pengguna yang dapat Anda bind. Perintah yang diatur ke "none" tersedia untuk di-bind tetapi dinonaktifkan secara default.

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

keybinds sudah usang. Ini disimpan agar konfigurasi yang ada terus berfungsi saat pengguna bermigrasi ke keymap.

Hanya gunakan keybinds ketika keymap tidak ada. Jika kedua field diatur, keymap menang dan keybinds diabaikan untuk resolusi pintasan.

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

Default Windows:

Di Windows native, default untuk undo dan terminal suspend berbeda untuk keymap dan keybinds warisan:

  • input.undo default ke ctrl+z,ctrl+-,super+z ketika tidak secara eksplisit dikonfigurasi (binding ctrl+z ditambahkan karena terminal Windows tidak mendukung suspend POSIX).
  • terminal.suspend dinonaktifkan karena terminal Windows native tidak mendukung suspend POSIX.

Pintasan input bawaan

Input prompt mendukung pintasan gaya Readline/Emacs umum untuk mengedit teks. Ini adalah default bawaan: Anda dapat menggantinya di bagian input dari tui.json di atas.

PintasanAksi
ctrl+aPindah ke awal baris saat ini
ctrl+ePindah ke akhir baris saat ini
ctrl+bPindahkan kursor kembali satu karakter
ctrl+fPindahkan kursor maju satu karakter
alt+bPindahkan kursor kembali satu kata
alt+fPindahkan kursor maju satu kata
ctrl+dHapus karakter di bawah kursor
ctrl+kBunuh hingga akhir baris
ctrl+uBunuh hingga awal baris
ctrl+wBunuh kata sebelumnya
alt+dBunuh kata berikutnya
ctrl+tTransposisi karakter
ctrl+gBatalkan popovers / batalkan respons

Shift+Enter

Beberapa terminal tidak mengirim tombol modifier dengan Enter secara default. Anda mungkin perlu mengonfigurasi terminal Anda untuk mengirim Shift+Enter sebagai urutan escape.

Windows Terminal

Buka settings.json Anda di:

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

Tambahkan ini ke array actions tingkat root:

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

Tambahkan ini ke array keybindings tingkat root:

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

Simpan file dan restart Windows Terminal atau buka tab baru.

Ctrl+I