本来之前就知道有 tmux
这样一个窗口分隔工具,只不过一直使用着iTerm2
,本身就自带有标签页功能,所以就一直没去学习这个工具。
这段时间需要经常访问Linux
服务器,所以在服务器上安装了这个工具。
安装
Mac:
1 | brew install tmux |
Linux:
1 | apt-get install tmux |
一般情况下 tmux
中所有的快捷键都需要和前缀快捷键 ⌃b
来组合使用(注:⌃ 为 Mac 的 control 键),以下是常用的窗格(pane
)快捷键列表。
会话
第一次使用tmux
可能会被Session
、窗口
、窗格
这些陌生的概念,弄得摸不着头脑。
这里总结成一句话就是:
一个完整的会话(Session)是由数个窗口组成,而一个窗口又可以分成若各个窗格。
使用tmux
命令会默认新建一个tmux
会话:
1 | // 默认新建一个Session 名称为 0 的窗口。 |
常用Session
操作:
- $ 重命名当前会话
- s 选择会话列表
- d 退出当前会话(不是删除),运行后将会退出 tmux 进程,返回至 shell 主进程。
窗口
窗口的概念不同于窗格,窗口互不影响,窗格相互分隔。
常用窗口操作:
- c 新建窗口,此时当前窗口会切换至新窗口,不影响原有窗口的状态
- p 切换至上一窗口
- n 切换至下一窗口
- w 窗口列表选择,注意 macOS 下使用 ⌃p 和 ⌃n 进行上下选择
- & 关闭当前窗口
- , 重命名窗口,可以使用中文,重命名后能在 tmux 状态栏更快速的识别窗口 id
- 0 切换至 0 号窗口,使用其他数字 id 切换至对应窗口
- f 根据窗口名搜索选择窗口,可模糊匹配
窗格
窗格是在窗口下的概念,若干个窗格组成一个窗口。
常用窗格操作:
- % 左右平分出两个窗格
- “ 上下平分出两个窗格
- x 关闭当前窗格
- { 当前窗格前移
- } 当前窗格后移
- ; 选择上次使用的窗格
- o 选择下一个窗格,也可以使用上下左右方向键来选择
- space 切换窗格布局,tmux 内置了五种窗格布局,也可以通过 ⌥1 至 ⌥5来切换
- z 最大化当前窗格,再次执行可恢复原来大小
- q 显示所有窗格的序号,在序号出现期间按下对应的数字,即可跳转至对应的窗格
其他命令
上面那些命令都是配合⌃ + b
快捷键使用的,下面的这些命令都是在Shell
进程中直接执行的。
新建名称为 foo 的会话
1 | tmux new -s foo |
列出所有 tmux 会话
1 | tmux ls |
恢复上一次会话
1 | tmux a |
恢复名为 foo 的会话
1 | tmux a -t foo |
删除名为 foo 的会话
1 | tmux kill -session -t foo |
删除所有会话
1 | tmux kill -server |
tmux or iterm2
tmux
和iTerm2
都有窗口管理方面的功能,只是前者相比后者的优势在于:
iTerm2
的窗格切换快捷键(⌘⌥→
)容易与其他软件全局快捷键冲突(例如Spectacle
的窗口分割快捷键),tmux
由于存在前缀快捷键,所以不存在快捷键冲突问题;tmux
可以在终端软件重启后通过命令行恢复上次的session
,而终端软件则不行;tmux
简洁优雅、订制性强,学会之后也能在Linux
上使用,有助于逼格提升。
参考链接
- Tmux 快捷键&速查表&简明教程
- 十分钟学会 Tmux
- [Tmux 快捷键和备忘录](