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

Pengaturan Terminal

Pi menggunakan Kitty keyboard protocol untuk deteksi kunci pengubah yang andal. Kebanyakan terminal modern mendukung protokol ini, namun beberapa memerlukan konfigurasi.

Kitty, iTerm2

Bekerja di luar kotak.

Terminal Apel

Pi mengaktifkan pelaporan kunci yang ditingkatkan bila tersedia. Jika Terminal.app masih mengirimkan Return biasa untuk Shift+Enter, pi menggunakan fallback pengubah macOS lokal untuk memperlakukan Return tersebut sebagai Shift+Enter.

Penggantian ini hanya berfungsi ketika pi berjalan di Mac yang sama dengan Terminal.app. Itu tidak dapat mendeteksi keyboard lokal melalui jarak jauh SSH.

Hantu

Tambahkan ke konfigurasi Ghostty Anda (~/Library/Application Support/com.mitchellh.ghostty/config di macOS, ~/.config/ghostty/config di Linux):

keybind = alt+backspace=text:\x1b\x7f

Versi Kode Claude yang lebih lama mungkin telah menambahkan pemetaan Ghostty ini:

keybind = shift+enter=text:\n

Pemetaan itu mengirimkan byte linefeed mentah. Di dalam pi, itu tidak dapat dibedakan dari Ctrl+J, jadi tmux dan pi tidak lagi melihat peristiwa penting shift+enter yang sebenarnya.

Jika Kode Claude 2.x atau yang lebih baru adalah satu-satunya alasan Anda menambahkan pemetaan tersebut, Anda dapat menghapusnya, kecuali Anda ingin menggunakan Kode Claude di tmux, yang masih memerlukan pemetaan Ghostty tersebut.

Pi mengikat Ctrl+J sebagai alias baris baru default, jadi Shift+Enter tetap bekerja di tmux melalui remap tersebut tanpa konfigurasi pi tambahan.

WezTerm

WezTerm biasanya berfungsi langsung untuk Shift+Enter melalui xterm memodifikasiOtherKeys. Untuk menggunakan protokol keyboard Kitty secara eksplisit, buat ~/.wezterm.lua:

local wezterm = require 'wezterm'
local config = wezterm.config_builder()
config.enable_kitty_keyboard = true
return config

Di macOS, WezTerm mengikat Option+Enter ke layar penuh secara default. Untuk menggunakan Option+Enter untuk antrian tindak lanjut pi, tambahkan penggantian kunci ini:

local wezterm = require 'wezterm'
local config = wezterm.config_builder()
config.keys = {
  {
    key = 'Enter',
    mods = 'ALT',
    action = wezterm.action.SendString('\x1b[13;3u'),
  },
}
return config

Jika Anda sudah memiliki tabel config.keys, tambahkan entri ke dalamnya.

Di WSL, WezTerm mungkin memerlukan kursor perangkat keras yang terlihat untuk penentuan posisi jendela kandidat IME. Jika kandidat IME CJK tidak mengikuti kursor teks, setel PI_HARDWARE_CURSOR=1 sebelum menjalankan pi atau setel showHardwareCursor ke true di pengaturan.

Sigap

Alacritty biasanya bekerja di luar kotak untuk Shift+Enter. Di macOS, Option+Enter mungkin muncul sebagai Enter biasa. Untuk menggunakan Option+Enter untuk antrian tindak lanjut pi, tambahkan ke ~/.config/alacritty/alacritty.toml:

[[keyboard.bindings]]
key = "Enter"
mods = "Alt"
chars = "\u001b[13;3u"

Mulai ulang Alacritty setelah mengubah konfigurasi.

VS Code (Terminal Terintegrasi)

VS Code 1.109.5 dan yang lebih baru mengaktifkan protokol keyboard Kitty di terminal terintegrasi secara default, jadi Shift+Enter akan langsung berfungsi.

Versi VS Code yang lebih lama dari 1.109.5 memerlukan pengikatan kunci terminal eksplisit untuk Shift+Enter.

keybindings.json lokasi:

  • macOS: ~/Library/Application Support/Code/User/keybindings.json
  • Linux: ~/.config/Code/User/keybindings.json
  • Jendela: %APPDATA%\\Code\\User\\keybindings.json

Tambahkan ke keybindings.json:

{
  "key": "shift+enter",
  "command": "workbench.action.terminal.sendSequence",
  "args": { "text": "\u001b[13;2u" },
  "when": "terminalFocus"
}

Terminal Windows

Tambahkan ke settings.json (Ctrl+Shift+, atau Pengaturan → Buka file JSON) untuk meneruskan tombol Enter yang dimodifikasi yang digunakan pi:

{
  "actions": [
    {
      "command": { "action": "sendInput", "input": "\u001b[13;2u" },
      "keys": "shift+enter"
    },
    {
      "command": { "action": "sendInput", "input": "\u001b[13;3u" },
      "keys": "alt+enter"
    }
  ]
}
  • Shift+Enter menyisipkan baris baru.
  • Terminal Windows mengikat Alt+Enter ke layar penuh secara default. Itu mencegah pi menerima Alt+Enter untuk antrian tindak lanjut.
  • Memetakan ulang Alt+Enter ke sendInput meneruskan kunci kunci sebenarnya ke pi.

Jika Anda sudah memiliki array actions, tambahkan objek ke dalamnya. Jika perilaku layar penuh lama masih berlanjut, tutup sepenuhnya dan buka kembali Terminal Windows.

xfce4-terminal, terminator

Terminal-terminal ini mempunyai dukungan escape sequence yang terbatas. Tombol Enter yang dimodifikasi seperti Ctrl+Enter dan Shift+Enter tidak dapat dibedakan dari Enter biasa, sehingga mencegah pengikatan tombol khusus seperti submit: ["ctrl+enter"] berfungsi.

Untuk pengalaman terbaik, gunakan terminal yang mendukung protokol keyboard Kitty:

IntelliJ IDEA (Terminal Terintegrasi)

Terminal internal memiliki dukungan urutan escape yang terbatas. Shift+Enter tidak dapat dibedakan dari Enter di terminal IntelliJ.

Jika Anda ingin kursor perangkat keras terlihat, setel PI_HARDWARE_CURSOR=1 sebelum menjalankan pi (dinonaktifkan secara default untuk kompatibilitas).

Pertimbangkan untuk menggunakan emulator terminal khusus untuk pengalaman terbaik.