コンテンツにスキップ

tmux セットアップ

Pi は tmux 内で動作しますが、tmux はデフォルトで特定のキーから修飾キー情報を取り除きます。設定がない場合、Shift+EnterCtrl+Enter は通常 plain Enter と区別できません。

~/.tmux.conf に追加:

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

その後 tmux を完全に再起動:

Terminal window
tmux kill-server
tmux

Kitty キーボードプロトコルが利用できない場合、Pi は拡張キー報告を自動的に要求します。extended-keys-format csi-u では tmux が CSI-u 形式で修飾キーを転送し、これが最も信頼性の高い設定です。extended-keys-format オプションには tmux 3.5 以降が必要です。

次のみの場合:

set -g extended-keys on

tmux はデフォルトで 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;5u
  • Ctrl+D\x1b[100;5u
  • Ctrl+Enter\x1b[13;5u

Pi は両形式をサポートしますが、csi-u が推奨 tmux 設定です。

tmux extended keys なしでは、修飾 Enter キーがレガシーシーケンスに折りたたまれます:

キーextkeys なし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 で送信、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 形式もサポートします。