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.
| Field | Deskripsi |
|---|---|
leader | Tombol yang digunakan oleh urutan <leader>. Default ke ctrl+x. |
leader_timeout | Berapa lama Dropstone menunggu tombol berikutnya setelah leader key, dalam milidetik. Default ke 2000. |
sections | Peta 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.undodefault kectrl+z,ctrl+-,super+zketika tidak secara eksplisit dikonfigurasi (bindingctrl+zditambahkan karena terminal Windows tidak mendukung suspend POSIX).terminal.suspenddinonaktifkan 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.
| Pintasan | Aksi |
|---|---|
ctrl+a | Pindah ke awal baris saat ini |
ctrl+e | Pindah ke akhir baris saat ini |
ctrl+b | Pindahkan kursor kembali satu karakter |
ctrl+f | Pindahkan kursor maju satu karakter |
alt+b | Pindahkan kursor kembali satu kata |
alt+f | Pindahkan kursor maju satu kata |
ctrl+d | Hapus karakter di bawah kursor |
ctrl+k | Bunuh hingga akhir baris |
ctrl+u | Bunuh hingga awal baris |
ctrl+w | Bunuh kata sebelumnya |
alt+d | Bunuh kata berikutnya |
ctrl+t | Transposisi karakter |
ctrl+g | Batalkan 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.