Dropstone Docs

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.

KolomDeskripsi
leaderTombol yang digunakan oleh urutan <leader>. Bawaan adalah ctrl+x.
leader_timeoutBerapa lama Dropstone menunggu tombol berikutnya setelah tombol leader, dalam milidetik. Bawaan adalah 2000.
sectionsPeta 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.undo bawaan adalah ctrl+z,ctrl+-,super+z ketika tidak dikonfigurasi secara eksplisit (pengikatan ctrl+z ditambahkan karena terminal Windows tidak mendukung POSIX suspend).
  • terminal.suspend dinonaktifkan 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.

PintasanAksi
ctrl+aPindah ke awal baris saat ini
ctrl+ePindah ke akhir baris saat ini
ctrl+bPindahkan kursor mundur satu karakter
ctrl+fPindahkan kursor maju satu karakter
alt+bPindahkan kursor mundur satu kata
alt+fPindahkan kursor maju satu kata
ctrl+dHapus karakter di bawah kursor
ctrl+kHapus hingga akhir baris
ctrl+uHapus hingga awal baris
ctrl+wHapus kata sebelumnya
alt+dHapus kata berikutnya
ctrl+tTukar karakter
ctrl+gBatalkan 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.

Ctrl+I