tmux
tmux 可以把一个终端分成多个窗格,比如左边跑 AI 助手、右边开 shell 或编辑器。在容器里这样启动:
bash
tmux快捷键
前缀键是 tmux 默认的 Ctrl+b:先按 Ctrl+b,两个键都松开,再按下一个键。
| 按键 | 作用 |
|---|---|
Ctrl+b 然后 | | 左右分屏(新窗格在右边) |
Ctrl+b 然后 - | 上下分屏(新窗格在下面) |
Ctrl+b 然后 c | 新建窗口 |
Ctrl+b 然后方向键 | 在窗格之间切换 |
Ctrl+b 然后 [ | 进入复制模式(用键盘滚动,按 q 退出) |
Ctrl+b 然后 d | 暂时离开(detach),会话继续在后台运行,tmux attach 可以回来 |
新窗格和新窗口都会在当前目录打开,窗口和窗格的编号从 1 开始。
后台窗口有新输出时,状态栏会高亮提示,同时跑多个 AI 助手时很方便。
滚动和复制
已开启鼠标支持,所以一切都按窗格进行:
- 滚动:滚轮滚动的是鼠标所在窗格的历史记录(最多 5 万行)。按
q或滚回最底部即可返回。 - 复制:用鼠标拖选,松开鼠标的那一刻就已经复制好了,选区会保留在屏幕上。不需要再按
Cmd+C/Ctrl+Shift+C,按了反而复制不到东西。 - 键盘复制:在复制模式里,按
v开始选择,按y复制(vi 键位)。
Claude Code、Neovim 这类自己处理鼠标的程序,在它们自己的窗格里仍然由它们接收滚轮和拖选。
宿主机终端设置
复制的内容通过 OSC 52 控制序列,从 tmux 传到你电脑的剪贴板,需要你电脑上的终端允许:
| 终端 | 设置 |
|---|---|
| Ghostty | 不用设置,默认允许写剪贴板 |
| iTerm2 | Settings → General → Selection → 打开 Applications in terminal may access clipboard |
| 其他终端 | 如果支持,打开 OSC 52 或"允许程序写入剪贴板"之类的选项 |
使用终端自己的选择
想绕过 tmux、用终端本身的方式选择文字,拖选时按住修饰键:
- Ghostty:
Shift - iTerm2:
Option
这种选择会按整行选中、跨越所有窗格,用终端平时的快捷键复制。