tmux 是一个优秀的终端复用器类软件。用户可以通过 tmux 在一个终端内管理多个分离的会话,窗口及面板,对于同时使用多个命令行,或多个任务时非常方便。同时 tmux 可以保存会话的 session,方便了 SSH 连接工作状态的保存恢复。
使用
tmux 采用 client/server 模型,主要由以下模块组成:
| 模块 | 简介 |
|---|---|
| server | 服务。tmux 运行的基础服务,以下模块均依赖此服务。 |
| session | 会话。一个服务可以包含多个会话。 |
| window | 窗口。一个会话可以包含多个窗口。 |
| panel | 面板。一个窗口可以包含多个面板。 |
执行 tmux 命令时就开启了一个服务并创建了一个会话,窗口和面板。
终端指令
| 功能 | 指令 | 简写 |
|---|---|---|
| 启动服务 | tmux |
|
| 启动服务并指定会话名和窗口名 | tmux new-session -s 会话名 -n 窗口名 |
tmux new |
| 恢复会话至最近使用会话 | tmux attach-session |
tmux a |
| 恢复会话至指定会话 | tmux a -t 目标会话 |
|
| 列出所有会话 | tmux list-sessions |
tmux ls |
| 关闭指定会话 | tmux kill-session -t 目标会话 |
|
| 关闭所有服务 | tmux kill-server |
tmux 简写指令只要简写到没有其他歧义项即可。如 tmux attach-session 可简写 tmux attach 甚至 tmux at 、tmux a 。另外通过输入指令时用 Tab 键查看可能简写,比如输入 tmux new 后按 Tab 键提示:
1 | new-session new -- Create a new session |
tmux 内指令
tmux 中执行指令需要先按下前缀键,默认 Ctrl-b 然后按下相应键位执行指令。下面指令均省略前缀键。
会话
| 功能 | 指令 |
|---|---|
| 创建新会话 | :new<回车> |
| 列出所有会话 | s |
| 重命名当前会话 | $ |
退出会话(后台仍有服务,可通过 tmux a 恢复会话) |
d |
窗口
| 功能 | 指令 |
|---|---|
| 创建新窗口 | c |
| 列出所有窗口 | w |
| 跳转至下一个窗口 | n |
| 跳转至上一个窗口 | p |
| 查找窗口 | f |
| 重命名当前窗口 | , |
| 关闭当前窗口 | & |
面板
| 功能 | 指令 |
|---|---|
| 垂直分割当前面板并创建新面板 | % |
| 水平分割当前面板并创建新面板 | " |
| 切换至下一面板 | o |
| 将下一面板换至当前位置 | Ctrl-o |
| 显示面板号,输入对应数字可切换 | q |
| 关闭当前面板 | x |
| 切换面板布局 | 空格 |
| 将当前面板左移 | { |
| 将当前面板右移 | } |
| 将当前面板最大化,再次使用还原 | z |
同步面板
该指令可以同步当前窗口内所有面板,重复执行将会在开关模式循环切换。
1 | :setw synchronize-panes |

复制模式
按 前缀 + [ 进入复制模式后,可以复制文字等。tmux 复制模式默认移动为 emacs 风格,也可以在 tmux 配置文件中设置为 vi 风格。通过复制模式的快捷键可以进行快捷的选词等操作,甚至可以通过插件来打开文件。
在 tmux 复制模式中使用 vi 风格,在 ~/.tmux.conf 添加配置项 setw -g mode-keys vi 即可。
下面为复制模式的快捷键:
| 功能 | vi | emacs |
|---|---|---|
| 开始选择 | 空格 |
Ctrl-空格 |
| 清除选择内容 | ESC |
Ctrl-g |
| 复制选择内容 | 回车 |
M-w |
| 退出复制模式 | q |
ESC |
| 光标左移 | h |
Left |
| 光标右移 | l |
Right |
| 光标下移 | j |
Down |
| 光标上移 | k |
Up |
| 光标移至首行 | H |
M-R |
| 光标移至中间行 | M |
M-r |
| 光标移至尾行 | L |
|
| 移至行首 | 0 |
Ctrl-a |
| 移至行尾 | $ |
Ctrl-e |
| 下一个词 | w |
M-f |
| 上一个词 | b |
M-b |
| 下一页 | Ctrl-f |
Page Down |
| 上一页 | Ctrl-b |
Page Up |
| 向下滚动半屏 | Ctrl-d |
M-Down |
| 向上滚动半屏 | Ctrl-u |
M-Up |
| 向下翻 | J |
Ctrl-Down |
| 向上翻 | K |
Ctrl-Up |
| 向后搜索 | / |
Ctrl-s |
| 向前搜索 | ? |
Ctrl-r |
| 继续搜索 | n |
n |
其他
| 功能 | 指令 |
|---|---|
| 面板中显示数字时钟 | t |
| 列出所有快捷键 | ? |
| 进入命令模式 | : |
配置文件
tmux 读取个人配置文件默认在目录 ~/.tmux.conf 。一般安装完 tmux 后需要手动在主目录下创建 .tmux.conf 文件。这里建议修改前缀键为 Ctrl-a,并将 大写锁定键 修改为 Ctrl ,macOS 下可在 系统偏好设置 - 键盘 - 修饰键 中选择指定键盘并更改 大写锁定键 的映射。配置文件中按键均需要先按下前缀键后再按相应按键才能执行对应绑定。常用配置如下:
1 | # 修改默认前缀键为 Ctrl-a 并取消原前缀键 |
插件
tmux 已经可以实现很多操作了,但是仍然有一定局限性,下面介绍一些常用插件。
tpm
tmux 插件管理工具。
安装:
1 | $ git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm |
配置文件 ~/.tmux.conf 底部添加:
1 | # 插件列表 |
快捷键:
| 功能 | 指令 |
|---|---|
| 安装插件 | Shift-i |
| 升级插件 | Shift-u |
| 卸载插件 | ALT-u |
重新载入 tmux 配置后,安装按下 前缀键-I 即可完成 tpm 的安装,以后安装其他插件只要在插件列表下添加并进行安装操作即可。
tmux-resurrect
保存 tmux 状态的插件,可以在 tmux server 关闭后进行 tmux 的状态恢复,方便重启等情况 tmux 的状态恢复。同时可以安装自动保存 tmux 状态的插件 tmux-continuum,该插件 15 分钟自动保存一次 tmux 状态。
插件列表添加:
1 | set -g @plugin 'tmux-plugins/tmux-resurrect' |
快捷键:
| 功能 | 指令 |
|---|---|
| 保存 tmux 状态 | Ctrl-s |
| 恢复 tmux 状态 | Ctrl-r |
tmux-continuum 可以自动在启动 tmux 服务时恢复上一次状态。需在 ~/.tmux.conf 配置:
1 | set -g @continuum-restore 'on' |
tmux-open
在 tmux 打开选中文件或网址的插件,需要在 tmux 复制模式下选中。
插件列表添加:
1 | set -g @plugin 'tmux-plugins/tmux-open' |
快捷键:
| 功能 | 指令 |
|---|---|
| 打开选中文件使用系统默认软件 | o |
| 打开选中文件使用终端编辑器 | Ctrl-o |
| 使用搜索引擎搜索选中内容 | Shift-s |
使用搜索引擎搜索需要在 ~/.tmux.conf 中配置:
1 | set -g @open-S 'https://www.google.com/search?q=' |
如上是使用谷歌搜索,S 指定了复制模式下的快捷键。具体可查看 tmux-open 说明。
vim-tmux-navigator
支持在 vim 中通过快捷键进行 tmux 面板的跳转,下面快捷键需要在 vim 中使用。
安装:
- vim 中添加
christoomey/vim-tmux-navigator插件。 - tmux 插件列表添加
set -g @plugin 'christoomey/vim-tmux-navigator'。
快捷键:
| 功能 | 指令 |
|---|---|
| 跳转至左侧面板 | Ctrl-h |
| 跳转至右侧面板 | Ctrl-l |
| 跳转至下方面板 | Ctrl-j |
| 跳转至上方面板 | Ctrl-k |
| 跳转至前一个面板 | Ctrl-\ |
参考资料: