Pi 官方文档

tmux

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 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;5u
  • Ctrl+D\x1b[100;5u
  • Ctrl+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 格式。

Pi 官方文档中文整理 · 机器初译,待人工校对

本文基于官方 MIT 文档翻译整理,不代表 pi.dev 官方中文站。同步 commit:8b97e75c,同步时间:2026/6/20

查看官方原文