Skip to content

tmux 设置 ​

Pi 在 tmux 内部运行,但 tmux 默认会剥离某些键的修饰符信息。如果不配置,Shift+Enter 和 Ctrl+Enter 通常无法与普通的 Enter 区分开来。

推荐配置 ​

将以下内容添加到 ~/.tmux.conf:

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

然后完全重启 tmux:

bash
tmux kill-server
tmux

注意: extended-keys-format 选项需要 tmux 3.5 或更高版本。对于 tmux 3.2-3.4 版本,可以省略 extended-keys-format csi-u;Pi 仍然支持 tmux 默认的 xterm modifyOtherKeys 格式。

当 Kitty 键盘协议不可用时,Pi 会自动请求扩展键报告。使用 extended-keys-format csi-u 时,tmux 会以 CSI-u 格式转发修改后的键,这是最可靠的配置。

为何推荐 csi-u ​

如果只设置:

tmux
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 扩展键时,修改后的 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 提交,Shift+Enter 换行)以及任何使用修改后 Enter 键的自定义快捷键。

要求 ​

  • tmux 3.5 或更高版本(运行 tmux -V 查看)
  • 支持扩展键的终端模拟器(Ghostty、Kitty、iTerm2、WezTerm、Windows Terminal)

Pi 编码助手中文文档