Keybinds
Sesuaikan pintasan keyboard Anda.
Sesuaikan pintasan keyboard Dropstone dengan keymap di tui.json.
keymap digabungkan dengan bawaan yang sudah ada, jadi Anda hanya perlu mengonfigurasi pintasan yang ingin diubah.
Kolom keybinds yang lebih lama masih diterima sebagai fallback migrasi tetapi sudah tidak digunakan lagi. Jika keymap ada, Dropstone mengabaikan keybinds.
Tombol leader
Dropstone menggunakan tombol leader untuk banyak pintasan. Ini menghindari konflik di terminal Anda.
Secara bawaan, ctrl+x adalah tombol leader dan pintasan leader mengharuskan Anda menekan tombol leader terlebih dahulu lalu pintasannya. Misalnya, untuk memulai sesi baru, Anda tekan ctrl+x lalu tekan n.
Anda tidak perlu menggunakan tombol leader, tetapi kami menyarankan untuk menggunakannya.
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.
| Kolom | Deskripsi |
|---|---|
leader | Tombol yang digunakan oleh urutan <leader>. Bawaan adalah ctrl+x. |
leader_timeout | Berapa lama Dropstone menunggu tombol berikutnya setelah tombol leader, dalam milidetik. Bawaan adalah 2000. |
sections | Peta area UI ke pengikatan perintah. |
Nilai pengikatan
Sebuah 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
Berikut adalah perintah yang menghadap pengguna yang dapat Anda ikat. Perintah yang diatur ke "none" tersedia untuk diikat tetapi dinonaktifkan secara bawaan.
{
"$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"
}
}
}
}
Keybinds lama
keybinds sudah tidak digunakan lagi. Ini dipertahankan agar konfigurasi yang ada tetap berfungsi sementara pengguna bermigrasi ke keymap.
Hanya gunakan keybinds ketika keymap tidak ada. Jika kedua kolom 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"
}
}
Bawaan Windows:
Pada Windows asli, bawaan untuk undo dan terminal suspend berbeda untuk keymap dan keybinds lama:
input.undobawaan adalahctrl+z,ctrl+-,super+zketika tidak dikonfigurasi secara eksplisit (pengikatanctrl+zditambahkan karena terminal Windows tidak mendukung POSIX suspend).terminal.suspenddinonaktifkan karena terminal Windows asli tidak mendukung POSIX suspend.
Pintasan input bawaan
Input prompt mendukung pintasan gaya Readline/Emacs yang umum untuk mengedit teks. Ini adalah bawaan: Anda dapat menimpanya 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 mundur satu karakter |
ctrl+f | Pindahkan kursor maju satu karakter |
alt+b | Pindahkan kursor mundur satu kata |
alt+f | Pindahkan kursor maju satu kata |
ctrl+d | Hapus karakter di bawah kursor |
ctrl+k | Hapus hingga akhir baris |
ctrl+u | Hapus hingga awal baris |
ctrl+w | Hapus kata sebelumnya |
alt+d | Hapus kata berikutnya |
ctrl+t | Tukar karakter |
ctrl+g | Batalkan popover / hentikan respons yang berjalan |
Shift+Enter
Beberapa terminal tidak mengirim tombol pengubah dengan Enter secara bawaan. 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 akar:
"actions": [
{
"command": {
"action": "sendInput",
"input": "\u001b[13;2u"
},
"id": "User.sendInput.ShiftEnterCustom"
}
]
Tambahkan ini ke array keybindings tingkat akar:
"keybindings": [
{
"keys": "shift+enter",
"id": "User.sendInput.ShiftEnterCustom"
}
]
Simpan file dan mulai ulang Windows Terminal atau buka tab baru.