1. 什么是 tmux
tmux
是一个 终端复用器(terminal multiplexer)。
它允许你在一个终端里运行多个会话(session)、窗口(window)、面板(pane),并且支持:
- 断开与重连:即使 SSH 连接断开,任务仍然继续运行。
- 多窗口管理:一个终端里像“标签页”一样切换窗口。
- 分屏功能:横向或纵向分割终端窗口。
- 团队协作:多人共享同一个会话。
2. 基本概念
- Session(会话):tmux 的最外层单位,可以理解为一个“工作区”。
- Window(窗口):一个会话里可以包含多个窗口,每个窗口对应一个虚拟终端。
- Pane(面板):一个窗口可以分割成多个面板,类似于分屏。
关系:
一个 tmux → 多个 Session → 每个 Session 包含多个 Window → 每个 Window 可以有多个 Pane
3. 安装 tmux
Debian / Ubuntu
sudo apt update
sudo apt install tmux
Fedora / CentOS
sudo dnf install tmux # Fedora
sudo yum install tmux # CentOS
macOS(使用 Homebrew)
brew install tmux
4. 会话管理
快捷键/命令 | 功能 |
---|---|
tmux ls |
列出所有会话 |
tmux |
新建会话,默认会话名字是数字编号 |
tmux new -s <name> |
新建会话,简写tmux a -t <name> |
tmux kill-session -t <name> |
杀掉指定会话 |
tmux kill-server |
杀掉所有会话 |
C-b $ |
重命名当前会话 |
C-b s |
列出所有会话并可以上下选择,并回车进入 |
C-b d |
分离(detach)当前会话 |
5. 窗口管理
快捷键 | 功能 |
---|---|
C-b c |
创建新窗口 |
C-b & |
杀掉当前窗口 |
exit 或者 Ctrl+d |
杀掉当前窗口,如果有多个面板会先退出面板 |
C-b , |
重命名当前窗口 |
C-b n |
下一个窗口 |
C-b p |
上一个窗口 |
C-b l |
切换到之前的窗口 |
C-b 0-9 |
切换到对应编号窗口 |
C-b ' |
输入窗口编号切换 |
C-b i |
显示窗口信息 |
6. 面板(分屏)管理
快捷键 | 功能 |
---|---|
C-b " |
垂直分割面板(上下) |
C-b % |
水平分割面板(左右) |
C-b x 或 exit 或者 C-d |
杀掉当前面板 |
C-b o |
切换到下一个面板 |
C-b ; |
切换到上一个活动面板 |
C-b ↑↓←→ |
方向键切换面板 |
C-b { |
与上方面板交换 |
C-b } |
与下方面板交换 |
C-b z |
放大/缩小当前面板(zoom) |
C-b ! |
将当前面板拆分为新窗口 |
C-b q |
显示面板编号 |
面板调整大小(推荐快捷键)
快捷键 | 功能 |
---|---|
C-b C-Up |
向上微调面板高度(Ctrl+↑) |
C-b C-Down |
向下微调面板高度(Ctrl+↓) |
C-b C-Left |
向左微调面板宽度(Ctrl+←) |
C-b C-Right |
向右微调面板宽度(Ctrl+→) |
7. 查找与信息
快捷键 | 功能 |
---|---|
C-b f |
搜索面板(pane) |
C-b t |
显示时钟 |
C-b ? |
显示所有快捷键,q退出 |
8. 鼠标滚动与复制
鼠标滚动
tmux默认是无法在窗口中使用鼠标滚动的,可以通过修改~/.tmux.conf
(没有的话需要新建)来支持鼠标
set -g mouse on
设置后通过tmux source-file ~/.tmux.conf
来生效。
复制
快捷键 | 功能 |
---|---|
C-b [ |
进入复制模式(可滚屏查看历史) |
C-b ] |
粘贴最近的 buffer |
C-b # |
列出所有 paste buffer |
C-b = |
从列表选择 paste buffer |
💡 复制模式中:
↑
/↓
或PgUp
/PgDn
翻页Space
开始选区,Enter
复制选区
我在使用xshll 8
测试,结果复制功能无法使用,暂不清楚原因。
可以参考tmux中的复制粘贴的文章尝试。
9. 使用场景
- 远程编译/运行程序:SSH 断线不会中断任务。
- 多任务并行:同一屏幕多个面板查看日志、运行服务。
- 长期后台运行:服务器维护必备工具。