Pi 的配置、擴充、平台設定和 API 參考。

tmux 設定

Pi 在 tmux 內部工作,但 tmux 預設情況下會從某些鍵中刪除修飾符資訊。如果沒有設定,Shift+EnterCtrl+Enter 通常與普通的 Enter 無法區分。

推薦設定

新增到 ~/.tmux.conf

set -g extended-keys on
set -g extended-keys-format csi-u

然後完全重新啟動 tmux:

tmux kill-server
tmux

當 Kitty 鍵盤協議不可用時,Pi 自動請求擴充按鍵報告。與 extended-keys-format csi-u 一起,tmux 以 CSI-u 格式轉發修改後的Key,這是最可靠的設定。 extended-keys-format 選項需要 tmux 3.5 或更高版本。

為什麼推薦 csi-u

僅與:

set -g extended-keys on

tmux 預設為 extended-keys-format xterm。當應用程式請求擴充Key報告時,修改後的Key將以 xterm modifyOtherKeys 格式轉發,例如:

  • Ctrl+C\x1b[27;5;99~
  • Ctrl+D\x1b[27;5;100~
  • Ctrl+Enter\x1b[27;5;13~

使用 extended-keys-format csi-u,相同的Key將轉發為:

  • Ctrl+C\x1b[99;5u
  • Ctrl+D\x1b[100;5u
  • Ctrl+Enter\x1b[13;5u

Pi 支援兩種格式,但 csi-u 是推薦的 tmux 設定。

修復的問題

如果沒有 tmux 擴充鍵,修改後的 Enter 鍵會折疊為舊序列:

按鍵 無擴充按鍵 使用 csi-u
Enter \r \r
Shift+Enter \r \x1b[13;2u
Ctrl+Enter \r \x1b[13;5u
Alt/Option+Enter \x1b\r \x1b[13;3u

這會影響預設的鍵綁定(Enter 用於commit,Shift+Enter 用於換行)以及使用修改後的 Enter 的任何自訂鍵綁定。

要求

  • extended-keys-format csi-u tmux 3.5 或更高版本(執行 tmux -V 進行檢查)
  • 支援擴充鍵的終端機模擬器(Ghostty、Kitty、iTerm2、WezTerm、Windows Terminal)

對於 tmux 3.2 到 3.4,省略 extended-keys-format csi-u; Pi 仍然支援 tmux 的預設 xterm modifyOtherKeys 格式。