Konfigurasi, kustomisasi, pengaturan platform, dan referensi API untuk Pi.

Pengikatan kunci

Semua pintasan keyboard dapat disesuaikan melalui ~/.pi/agent/keybindings.json. Setiap tindakan dapat terikat pada satu atau lebih kunci.

File konfigurasi menggunakan id pengikat kunci dengan spasi nama yang sama yang digunakan pi secara internal dan yang digunakan penulis ekstensi di keyHint() dan menyuntikkan manajer keybindings.

Konfigurasi lama yang menggunakan id dengan spasi nama sebelumnya seperti cursorUp atau expandTools dimigrasikan secara otomatis ke id dengan spasi nama saat startup.

Setelah mengedit keybindings.json, jalankan /reload di pi untuk menerapkan perubahan tanpa memulai ulang sesi.

Format Kunci

modifier+key dengan pengubah ctrl, shift, alt, super (dapat digabungkan) dan kuncinya adalah:

  • Huruf: a-z
  • Digit: 0-9
  • Tombol khusus: escape, esc, enter, return, tab, space, backspace, delete, insert, clear, home, end, pageUp, pageDown, up, down, left, right
  • Tombol fungsi: f1-f12
  • Simbol: `, -, =, [, ], \, ;, ', ,, ., /, !, @, #, $, %, ^, &, *, (, ), _, +, |, ~, {, }, :, <, >, ?

Kombinasi pengubah: ctrl+shift+x, alt+ctrl+x, ctrl+shift+alt+x, super+k, ctrl+super+k, ctrl+1, dll.

Pengikatan super memerlukan terminal yang melaporkan pengubah secara terpisah, biasanya melalui protokol keyboard Kitty. Mereka mungkin tidak dapat bekerja di terminal tanpa dukungan tersebut.

Semua Tindakan

TUI Gerakan Kursor Editor

ID pengikatan kunci Bawaan Keterangan
tui.editor.cursorUp up Pindahkan kursor ke atas, telusuri riwayat lama di bagian atas
tui.editor.cursorDown down Pindahkan kursor ke bawah, telusuri riwayat baru di bagian bawah
tui.editor.historyPrevious (tidak ada) Pilih entri riwayat prompt sebelumnya
tui.editor.historyNext (tidak ada) Pilih entri riwayat prompt berikutnya
tui.editor.cursorLeft left, ctrl+b Gerakkan kursor ke kiri
tui.editor.cursorRight right, ctrl+f Gerakkan kursor ke kanan
tui.editor.cursorWordLeft alt+left, ctrl+left, alt+b Pindahkan kata kursor ke kiri
tui.editor.cursorWordRight alt+right, ctrl+right, alt+f Pindahkan kata kursor ke kanan
tui.editor.cursorLineStart home, ctrl+home, ctrl+a Pindah ke baris awal
tui.editor.cursorLineEnd end, ctrl+end, ctrl+e Pindah ke akhir baris
tui.editor.jumpForward ctrl+] Lompat ke depan ke karakter
tui.editor.jumpBackward ctrl+alt+] Lompat mundur ke karakter
tui.editor.pageUp pageUp, ctrl+pageUp Gulir ke atas berdasarkan halaman
tui.editor.pageDown pageDown, ctrl+pageDown Gulir ke bawah berdasarkan halaman

Tindakan riwayat khusus selalu mengubah entri riwayat, terlepas dari posisi kursor dalam perintah multiline. Pengikatan riwayat eksplisit lebih diutamakan daripada tindakan aplikasi saat editor utama fokus, jadi pengikatan tui.editor.historyPrevious ke ctrl+p akan mengesampingkan perputaran model dalam konteks tersebut tanpa mengubah Ctrl+P pada penyeleksi.

TUI Penghapusan Editor

ID pengikatan kunci Bawaan Keterangan
tui.editor.deleteCharBackward backspace Hapus karakter mundur
tui.editor.deleteCharForward delete, ctrl+d Hapus karakter ke depan
tui.editor.deleteWordBackward ctrl+w, alt+backspace Hapus kata mundur
tui.editor.deleteWordForward alt+d, alt+delete Hapus kata maju
tui.editor.deleteToLineStart ctrl+u Hapus ke baris awal
tui.editor.deleteToLineEnd ctrl+k Hapus sampai akhir baris

TUI Masukan

ID pengikatan kunci Bawaan Keterangan
tui.input.newLine shift+enter, ctrl+j Sisipkan baris baru
tui.input.submit enter Kirim masukan
tui.input.tab tab Tab / pelengkapan otomatis

TUI Bunuh Cincin

ID pengikatan kunci Bawaan Keterangan
tui.editor.yank ctrl+y Tempel teks yang terakhir dihapus
tui.editor.yankPop alt+y Telusuri teks yang dihapus setelah penarikan
tui.editor.undo ctrl+- Membatalkan pengeditan terakhir

TUI Papan Klip dan Seleksi

ID pengikatan kunci Bawaan Keterangan
tui.input.copy ctrl+c Salin pilihan
tui.select.up up Pindahkan pilihan ke atas
tui.select.down down Pindahkan pilihan ke bawah
tui.select.pageUp pageUp Halaman dalam daftar
tui.select.pageDown pageDown Halaman bawah dalam daftar
tui.select.confirm enter Konfirmasikan pilihan
tui.select.cancel escape, ctrl+c Batalkan pilihan

TUI Area Pandang Layar Penuh

Tindakan ini berlaku ketika mode interaktif menggunakan --tui-mode fullscreen dan menargetkan wilayah gulir transkrip utama. Trackpad dua jari dan input roda mouse menggulir wilayah di bawah penunjuk, kembali ke transkrip melalui dok editor/status/footer tetap. Mengklik hyperlink OSC 8 akan membukanya di handler default. Menyeret dengan tombol mouse utama akan memilih teks dan menyalinnya ke clipboard; memegang di tepi atas atau bawah transkrip akan otomatis menggulir ke konten di luar layar.

Pengikatan transkrip layar penuh lebih diutamakan daripada pengikatan editor. Oleh karena itu, tombol navigasi default yang tidak dimodifikasi mengontrol transkrip dalam mode layar penuh, sementara varian ctrl terus mengontrol editor. Di luar mode layar penuh, kedua varian mengontrol editor.

Kunci Modus bawaan Modus layar penuh
home, end Editor Salinan
ctrl+home, ctrl+end Editor Editor
pageUp, pageDown Editor Salinan
ctrl+pageUp, ctrl+pageDown Editor Editor

Perutean ini tetap dapat dikonfigurasi melalui pengikatan tindakan biasa. Misalnya, "tui.altScreen.pageUp": "ctrl+pageUp" membuat pageUp mengontrol editor dan ctrl+pageUp mengontrol transkrip dalam mode layar penuh. Ikat tui.altScreen.halfPageUp dan tui.altScreen.halfPageDown untuk langkah transkrip yang lebih kecil sambil mempertahankan penjilidan satu halaman penuh. Pengaturan "tui.altScreen.pageUp": [] menonaktifkan pintasan transkrip itu sepenuhnya. Pengikatan pengguna menggantikan default untuk tindakan itu.

ID pengikatan kunci Bawaan Keterangan
tui.altScreen.pageUp pageUp Gulir transkrip ke atas satu halaman
tui.altScreen.pageDown pageDown Gulir transkrip ke bawah satu halaman
tui.altScreen.halfPageUp (tidak ada) Gulir transkrip ke atas setengah halaman
tui.altScreen.halfPageDown (tidak ada) Gulir transkrip ke bawah setengah halaman
tui.altScreen.previousPrompt ctrl+shift+up Lompat ke pesan yang ditandai sebelumnya
tui.altScreen.nextPrompt ctrl+shift+down Lompat ke pesan yang ditandai berikutnya
tui.altScreen.top home Gulir ke awal transkrip
tui.altScreen.bottom end Gulir ke akhir transkrip dan ikuti keluaran baru

Aplikasi

ID pengikatan kunci Bawaan Keterangan
app.interrupt escape Batalkan / batalkan
app.clear ctrl+c Hapus editor (pertama) / keluar (kedua)
app.exit ctrl+d Keluar (ketika editor kosong)
app.suspend ctrl+z (tidak ada di Windows) Tangguhkan ke latar belakang
app.editor.external ctrl+g Buka di editor eksternal (externalEditor, $VISUAL, $EDITOR, Notepad di Windows, atau nano di tempat lain)
app.clipboard.pasteImage ctrl+v (alt+v di Windows) Tempel gambar atau teks dari clipboard

Sesi

ID pengikatan kunci Bawaan Keterangan
app.session.new (tidak ada) Mulai sesi baru (/new)
app.session.tree (tidak ada) Buka session tree navigator (/tree)
app.session.fork (tidak ada) Garpu sesi saat ini (/fork)
app.session.resume (tidak ada) Buka pemilih resume sesi (/resume)
app.session.togglePath ctrl+p Alihkan tampilan jalur
app.session.toggleSort ctrl+s Alihkan mode pengurutan
app.session.toggleNamedFilter ctrl+n Alihkan filter khusus nama
app.session.rename ctrl+r Ganti nama sesi
app.session.delete ctrl+d Hapus sesi
app.session.deleteNoninvasive ctrl+backspace Hapus sesi saat kueri kosong

Models dan Berpikir

ID pengikatan kunci Bawaan Keterangan
app.model.select ctrl+l Buka pemilih model
app.model.cycleForward ctrl+p Putar ke model berikutnya
app.model.cycleBackward shift+ctrl+p Siklus ke model sebelumnya
app.thinking.cycle shift+tab Tingkat berpikir siklus
app.thinking.toggle ctrl+t Perkecil atau perluas blok pemikiran

Tampilan dan Antrean Pesan

ID pengikatan kunci Bawaan Keterangan
app.tools.expand ctrl+o Perkecil atau perluas keluaran alat
app.message.copy ctrl+x Salin pesan asisten terakhir, atau pesan yang dipilih di /tree
app.message.followUp alt+enter Pesan tindak lanjut antrian
app.message.dequeue alt+up Pulihkan pesan yang antri ke editor
ID pengikatan kunci Bawaan Keterangan
app.tree.foldOrUp ctrl+left, alt+left Lipat segmen cabang saat ini, atau lompat ke awal segmen sebelumnya
app.tree.unfoldOrDown ctrl+right, alt+right Buka segmen cabang saat ini, atau lompat ke awal segmen atau ujung cabang berikutnya
app.tree.editLabel shift+l Edit label pada simpul pohon yang dipilih
app.tree.toggleLabelTimestamp shift+t Alihkan stempel waktu label di pohon
app.tree.filter.default ctrl+d Setel filter pohon ke tampilan default
app.tree.filter.noTools ctrl+t Alihkan filter pohon yang menyembunyikan hasil alat
app.tree.filter.userOnly ctrl+u Alihkan filter pohon yang hanya menampilkan pesan pengguna
app.tree.filter.labeledOnly ctrl+l Alihkan filter pohon yang hanya menampilkan entri berlabel
app.tree.filter.all ctrl+a Alihkan filter pohon yang menampilkan semua entri
app.tree.filter.cycleForward ctrl+o Filter pohon siklus maju
app.tree.filter.cycleBackward shift+ctrl+o Siklus filter pohon mundur

Cakupan Models Pemilih

Digunakan di dalam pemilih model tercakup (dibuka melalui /scoped-models).

ID pengikatan kunci Bawaan Keterangan
app.models.save ctrl+s Simpan pilihan model saat ini ke pengaturan
app.models.enableAll ctrl+a Aktifkan semua model (atau semua yang cocok dengan pencarian saat ini)
app.models.clearAll ctrl+x Hapus semua model (atau semua yang cocok dengan pencarian saat ini)
app.models.toggleProvider ctrl+p Alihkan semua model untuk penyedia saat ini
app.models.reorderUp alt+up Pindahkan model yang dipilih ke atas dalam urutan siklus
app.models.reorderDown alt+down Pindahkan model yang dipilih ke bawah dalam urutan siklus

Konfigurasi Kustom

Buat ~/.pi/agent/keybindings.json:

{
  "tui.editor.historyPrevious": "ctrl+p",
  "tui.editor.historyNext": "ctrl+n",
  "tui.editor.deleteWordBackward": ["ctrl+w", "alt+backspace"]
}

Setiap tindakan dapat memiliki satu kunci atau serangkaian kunci. Konfigurasi pengguna mengesampingkan default.

Pada Windows asli, app.suspend tidak memiliki pengikatan default karena terminal Windows tidak mendukung kontrol pekerjaan Unix. Jika Anda mengikatnya secara manual, pi menampilkan pesan status alih-alih menangguhkan. Di WSL, perilaku normal Linux ctrl+z/fg masih berlaku.

Contoh Emacs

{
  "tui.editor.historyPrevious": "ctrl+p",
  "tui.editor.historyNext": "ctrl+n",
  "tui.editor.cursorLeft": ["left", "ctrl+b"],
  "tui.editor.cursorRight": ["right", "ctrl+f"],
  "tui.editor.cursorWordLeft": ["alt+left", "alt+b"],
  "tui.editor.cursorWordRight": ["alt+right", "alt+f"],
  "tui.editor.deleteCharForward": ["delete", "ctrl+d"],
  "tui.editor.deleteCharBackward": ["backspace", "ctrl+h"],
  "tui.input.newLine": ["shift+enter", "ctrl+j"]
}

Contoh Vim

{
  "tui.editor.cursorUp": ["up", "alt+k"],
  "tui.editor.cursorDown": ["down", "alt+j"],
  "tui.editor.cursorLeft": ["left", "alt+h"],
  "tui.editor.cursorRight": ["right", "alt+l"],
  "tui.editor.cursorWordLeft": ["alt+left", "alt+b"],
  "tui.editor.cursorWordRight": ["alt+right", "alt+w"]
}