Pi 官方文档
tmux
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 keyboard protocol 不可用时,Pi 会自动请求扩展按键上报。使用 extended-keys-format csi-u 时,tmux 会以 CSI-u 格式转发带修饰键的按键。这是最可靠的配置。extended-keys-format 选项要求 tmux 3.5 或更高版本。
为什么推荐 csi-u
如果只配置:
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;5uCtrl+D→\x1b[100;5uCtrl+Enter→\x1b[13;5u
Pi 同时支持这两种格式,但在 tmux 里,推荐使用 csi-u。
这个配置解决了什么问题
如果没有 tmux 的扩展按键支持,带修饰键的 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 的自定义按键绑定。
要求
- tmux 3.5 或更高版本才能使用
extended-keys-format csi-u(运行tmux -V检查版本) - 支持扩展按键的终端模拟器(Ghostty、Kitty、iTerm2、WezTerm、Windows Terminal)
在 tmux 3.2 到 3.4 版本中,省略 extended-keys-format csi-u;Pi 仍然支持 tmux 默认的 xterm modifyOtherKeys 格式。