tmux 設定
Pi 在 tmux 內部工作,但 tmux 預設會從某些鍵中刪除修飾符資訊。如果沒有配置,Shift+Enter和Ctrl+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格式轉送修改後的金鑰,這是最可靠的配置。 extended-keys-format 選項需要 tmux 3.5 或更高版本。
為什麼推薦csi-u
僅與:
set -g extended-keys ontmux 預設為 extended-keys-format xterm。當應用程式請求擴展金鑰報告時,修改後的金鑰將以 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,相同的金鑰將轉送為:
Ctrl+C→\x1b[99;5uCtrl+D→\x1b[100;5uCtrl+Enter→\x1b[13;5u
Pi 支援兩種格式,但csi-u 是建議的tmux 設定。
這修復了什麼
如果沒有 tmux 擴充鍵,修改後的 Enter 鍵會折疊為舊序列:
| 鑰匙 | 沒有外接鍵 | 與 csi-u |
|---|---|---|
| 進入 | \r |
\r |
| Shift+Enter | \r |
\x1b[13;2u |
| Ctrl+Enter | \r |
\x1b[13;5u |
| Alt/Option+Enter | \x1b\r |
\x1b[13;3u |
這會影響預設的鍵綁定(Enter用於提交,Shift+Enter用於換行)以及使用修改後的 Enter 的任何自訂鍵綁定。
要求
extended-keys-format csi-utmux 3.5 或更高版本(運行tmux -V進行檢查)- 支援擴展鍵的終端模擬器(Ghostty、Kitty、iTerm2、WezTerm、Windows Terminal)
對於 tmux 3.2 到 3.4,省略 extended-keys-format csi-u; Pi 仍然支援 tmux 的預設 xterm modifyOtherKeys 格式。