Tmux 学习笔记
这段时间整理笔记, 发现一篇宝藏文章: Tmux使用手册
| louis blog, 自己并没有好好通读,
这篇文章详细介绍了如何使用tmux并解释了为什么使用tmux而不是screen,
因为具有以下优点:
- 丝滑分屏(split),虽然iTem2也提供了横向和竖向分屏功能,但这种分屏功能非常拙劣,完全等同于屏幕新开一个窗口,新开的pane不会自动进入到当前目录,也没有记住当前登录状态。这意味着如果我ssh进入到远程服务器时,iTem2新开的pane中,我依然要重新走一遍ssh登录的老路(omg)。tmux就不会这样,tmux窗口中,新开的pane,默认进入到之前的路径,如果是ssh连接,登录状态也依旧保持着,如此一来,我就可以随意的增删pane,这种灵活性,好处不言而喻。
- 保护现场(attach),即使命令行的工作只进行到一半,关闭终端后还可以重新进入到操作现场,继续工作。对于ssh远程连接而言,即使网络不稳定也没有关系,掉线后重新连接,可以直奔现场,之前运行中的任务,依旧在跑,就好像从来没有离开过一样;特别是在远程服务器上运行耗时的任务,tmux可以帮你一直保持住会话。如此一来,你就可以随时随地放心地进行移动办公,只要你附近的计算机装有tmux(没有你也可以花几分钟装一个),你就能继续刚才的工作。
- 会话共享(适用于结对编程或远程教学),将 tmux 会话的地址分享给他人,这样他们就可以通过 SSH 接入该会话。如果你要给同事演示远程服务器的操作,他不必直勾勾地盯着你的屏幕,借助tmux,他完全可以进入到你的会话,然后静静地看着他桌面上你风骚的键盘走位,只要他愿意,甚至还可以录个屏。
特别记录一下学习过程
安装
Mac
1 | brew install tmux |
CentOS/Amazon Linux/RHEL
1 | yum install -y tmux |
Ubuntu
1 | apt-get install -y tmux |
基础使用
新建会话
1 | # 命令 |
断开会话
1 | # 命令 |
或者键盘执行组合键Ctrl+B->D,
即先按下Ctrl+B组合键, 松开,
然后按下D即可 原博文此处表述不够明确,
查询过tmux的manual后才理解
1 | man tmux |
重连会话
1 | # 命令 |
关闭会话
1 | # 命令 |
其他相关命令
kill-pane
简写为kill-p 关闭面板, 如果一个session只有一个面板,
执行这个命令等同于kill-session
kill-server
简写为kill-ser 关闭服务端, 所有会话都会被关闭
kill-window
简写为kill-w 关闭窗口, 如果一个session只有一个窗口,
执行这个命令等同于kill-session
查看会话
1 | # 命令 |
如果在会话中Ctrl+B->S,
然后就可以通过↑/↓/←/→来控制切换/展开等功能,
回车键进入
快捷指令
系统
| 前缀 | 指令 | 描述 |
|---|---|---|
Ctrl+b |
? |
显示快捷键帮助文档 |
Ctrl+b |
d |
断开当前会话 |
Ctrl+b |
D |
选择要断开的会话 |
Ctrl+b |
Ctrl+z |
挂起当前会话 |
Ctrl+b |
r |
强制重载当前会话 |
Ctrl+b |
s |
显示会话列表用于选择并切换 |
Ctrl+b |
: |
进入命令行模式,此时可直接输入ls等命令 |
Ctrl+b |
[ |
进入复制模式,按q退出 |
Ctrl+b |
] |
粘贴复制模式中复制的文本 |
Ctrl+b |
~ |
列出提示信息缓存 |
窗口(window)
| 前缀 | 指令 | 描述 |
|---|---|---|
Ctrl+b |
c |
新建窗口 |
Ctrl+b |
& |
关闭当前窗口(关闭前需输入y
or n确认) |
Ctrl+b |
0~9 |
切换到指定窗口 |
Ctrl+b |
p |
切换到上一窗口 |
Ctrl+b |
n |
切换到下一窗口 |
Ctrl+b |
w |
打开窗口列表,用于且切换窗口 |
Ctrl+b |
, |
重命名当前窗口 |
Ctrl+b |
. |
修改当前窗口编号(适用于窗口重新排序) |
Ctrl+b |
f |
快速定位到窗口(输入关键字匹配窗口名称) |
面板(pane)
| 前缀 | 指令 | 描述 |
|---|---|---|
Ctrl+b |
" |
当前面板上下一分为二,下侧新建面板 |
Ctrl+b |
% |
当前面板左右一分为二,右侧新建面板 |
Ctrl+b |
x |
关闭当前面板(关闭前需输入y
or n确认) |
Ctrl+b |
z |
最大化当前面板,再重复一次按键后恢复正常(v1.8版本新增) |
Ctrl+b |
! |
将当前面板移动到新的窗口打开(原窗口中存在两个及以上面板有效) |
Ctrl+b |
; |
切换到最后一次使用的面板 |
Ctrl+b |
q |
显示面板编号,在编号消失前输入对应的数字可切换到相应的面板 |
Ctrl+b |
{ |
向前置换当前面板 |
Ctrl+b |
} |
向后置换当前面板 |
Ctrl+b |
Ctrl+o |
顺时针旋转当前窗口中的所有面板 |
Ctrl+b |
方向键 |
移动光标切换面板 |
Ctrl+b |
o |
选择下一面板 |
Ctrl+b |
空格键 |
在自带的面板布局中循环切换 |
Ctrl+b |
Alt+方向键 |
以5个单元格为单位调整当前面板边缘 |
Ctrl+b |
Ctrl+方向键 |
以1个单元格为单位调整当前面板边缘(Mac下被系统快捷键覆盖) |
Ctrl+b |
t |
显示时钟 |
进阶使用
查看手册
1 | man tmux |
简洁手册
强推一个开源工具tldr->Too Long, Don't Read
喜欢node可以用:
sudo npm install -g tldr习惯Python的:
pip install tldr偏爱Go的:
go get github.com/pranavraja/tldr热爱Ruby的:
gem install told
tldr对tmux解释很简洁
目前还没有更多的使用场景, 配置文件修改的内容后续再补充, 参见原博文
增加常用的配置项
🆙2022-06-02
1 | # 绑定重新载入配置文件为r |