Tmux 对我最重要的一个作用是:避免网络断开或Terminal误关,再次登录又需要花很多时间恢复到之前状态。另外就是Tmux 窗口的功能可以让我在windows 系统上的 Git bash下操作更方便。
在 iSH 上安装 Tmux
apk add tmux
输入 tmux 命令进入 Tmux 窗口,在 Tmux 窗口里输入 exit 或 Ctrl-d 退出 Tmux 并释放会话。
在 Tmux 中输入Ctrl-B ? 能查看帮助,⚠️注意是同时按住 Ctrl 和 B 键,松开后再按 ? 键。
结构
一个 Tmux 可以包含多个 session(会话),一个 session 可以包含多个 window (窗口),一个 window 可以包含多个 pane(窗格)。
Tmux
|__ Session A
| |__ Window A1
| | |__ Pane A1a
| | |__ Pane A1b
| |
| |__ Window A2
| |__ Pane A2a
|
|__ Session B
|__ Window B1
| |__ Pane B1a
|
|__ Window B2
|__ Pane B2a
|__ Pane B2b
Session (会话)的操作
- tmux a # 打开最近一个会话,比较适合ssh 连到服务器
- ctrl-b d :从当前会话中跳出来,会话未释放
- ctrl-d:⚠️ 退出并释放当前会话
- ctrl-b w 查看会话+窗口树状结构
Window(窗口)的操作
- ctrl-b c:创建一个新窗口,底部状态栏会显示多个窗口的信息。
- ctrl-b p:切换到上一个窗口。
- ctrl-b n:切换到下一个窗口。
- ctrl-b <序号>:切换到指定编号的窗口,其中的
<序号>
是状态栏上的窗口序号。 - ctrl-b w:直观的从列表中选择窗口,如上图所示。
- ctrl-b ,:对窗口重命名。
Tmux 窗口是个很实用的功能,因为在Windows 系统上的Git bash 没有没有标签功能,只能打开多个层叠窗口,用起来不方便,而安装了 Tmux 的 Git bash 能很好的切换窗口。
Pane(窗格)的操作
- ctrl-b %:将当前窗格垂直切割
- ctrl-b “:将当前窗格水平切割
- ctrl-d:关闭当前窗格
- ctrl-b <方向键>:移动光标到不同窗格
- ctrl-b o:移动光标到另一窗格
- ctrl-b z:将当前窗格全屏 / 取消全屏
- ctrl-b-<方向键>(按住Ctrl-b不松开按方向键):按箭头方向调整窗格大小
- ctrl-b {:当前窗格与上一个窗格交换位置
- ctrl-b }:当前窗格与下一个窗格交换位置
其它
Tmux 下的 vim 粘贴会出现自动缩进,这不是大家希望看到的,在粘贴前输入:set paste,粘贴完后输入:set nopaste (否则会影响自动缩进)。
也可以写一个vim 映射快捷键来实现粘贴。
nnoremap ,p :set paste<CR>"+p:set nopaste<CR>