简介
Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。
使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机;
是BSD实现的Screen替代品,相对于Screen,它更加先进:支持屏幕切分,而且具备丰富的命令行参数,使其可以灵活、动态的进行各种布局和操作。
功能
- 提供了强劲的、易于使用的命令行界面。
- 可横向和纵向分割窗口。
- 窗格可以自由移动和调整大小,或直接利用四个预设布局之一。
- 支持 UTF-8 编码及 256 色终端。
- 可在多个缓冲区进行复制和粘贴。
- 可通过交互式菜单来选择窗口、会话及客户端。
- 支持跨窗口搜索。
- 支持自动及手动锁定窗口。
使用
进入tmux
面板后,一定要先按ctrl+b,然后松开,再按其他的组合键才生效。
新建会话
第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是1。
使用编号区分会话,不太直观,更好的方法是为会话起名。
使用下面的指令即可:
1 | $ tmux new -s <session-name> |
查看会话
查看当前所有的 Tmux 会话
1 | $ tmux ls |
分离会话
这个是最常用的方法了,按下Ctrl+b d
或者输入tmux detach
命令,就会将当前会话与窗口分离。
而此时会话里面的进程依然在后台执行。
参考查看会话
来查看所有的会话。
接入会话
attach命令用于重新接入某个已存在的会话,可以通过编号或者会话名来接入
1 | # 使用会话编号 |
杀死会话
可以通过tmux kill-session
命令用于杀死某个会话,与attach类似,可以通过会话编号与session名来kill
1 | # 使用会话编号 |
切换会话
tmux switch命令用于切换会话。
1 | # 使用会话编号 |
重命名会话
tmux rename-session命令用于重命名会话。
1 | $ tmux rename-session -t 0 <new-name> |
上面命令将0号会话重命名。
最简操作流程
综上所述,以下是 Tmux 的最简操作流程。
- 新建会话
tmux new -s session_name
- 在 Tmux 窗口运行所需的程序
- 按下快捷键
Ctrl+b d
将会话分离 - 下次使用时,重新连接到会话
tmux attach-session -t session_name
窗格操作
Tmux 可以将窗口分成多个窗格(pane),每个窗格运行不同的命令。以下命令都是在 Tmux 窗口中执行。
划分窗格
tmux split-window命令用来划分窗格。
1 | # 划分上下两个窗格 |
移动光标
tmux select-pane命令用来移动光标位置。
1 | # 光标切换到上方窗格 |
交换窗格位置
tmux swap-pane命令用来交换窗格位置。
1 | # 当前窗格上移 |
窗口管理
除了将一个窗口划分成多个窗格,Tmux 也允许新建多个窗口。
新建窗口
tmux new-window命令用来创建新窗口。
1 | $ tmux new-window |
切换窗口
tmux select-window命令用来切换窗口。
1 | # 切换到指定编号的窗口 |
重命名窗口
tmux rename-window命令用于为当前窗口起名(或重命名)。
1 | $ tmux rename-window <new-name> |
七、其他命令
下面是一些其他命令。
列出所有快捷键,及其对应的 Tmux 命令
$ tmux list-keys
列出所有 Tmux 命令及其参数
$ tmux list-commands
列出当前所有 Tmux 会话的信息
$ tmux info
重新加载当前的 Tmux 配置
$ tmux source-file ~/.tmux.conf
常用到的几个组合键:
快捷键 | 说明 |
---|---|
ctrl+b ? | 显示快捷键帮助 |
ctrl+b 空格键 | 采用下一个内置布局,这个很有意思,在多屏时,用这个就会将多有屏幕竖着展示 |
Ctrl+b , | 窗口重命名 |
ctrl+b ! | 把当前窗口变为新窗口 |
ctrl+b “ | 模向分隔窗口 |
ctrl+b % | 纵向分隔窗口 |
Ctrl+b ; | 光标切换到上一个窗格 |
Ctrl+b { | 当前窗格与上一个窗格交换位置 |
Ctrl+b } | 当前窗格与下一个窗格交换位置 |
ctrl+b 空格键 | 采用下一个内置布局,这个很有意思,在多屏时,用这个就会将多有屏幕竖着展示 |
ctrl+b ! | 把当前窗口变为新窗口 |
ctrl+b “ | 模向分隔窗口 |
ctrl+b % | 纵向分隔窗口 |
ctrl+b q | 显示分隔窗口的编号 |
ctrl+b o | 跳到下一个分隔窗口。多屏之间的切换 |
ctrl+b 上下键 | 上一个及下一个分隔窗口 |
ctrl+b C-方向键 | 调整分隔窗口大小 |
ctrl+b & | 确认后退出当前tmux |
ctrl+b [ | 复制模式,即将当前屏幕移到上一个的位置上,其他所有窗口都向前移动一个。 |
ctrl+b c | 创建新窗口 |
ctrl+b d | 脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话 |
ctrl+b n | 选择下一个窗口 |
ctrl+b l | 最后使用的窗口 |
Ctrl+b o | 光标切换到下一个窗格 |
ctrl+b n | 选择下一个窗口 |
ctrl+b l | 最后使用的窗口 |
ctrl+b p | 选择前一个窗口 |
ctrl+b w | 以菜单方式显示及选择窗口 |
ctrl+b s | 以菜单方式显示和选择会话。这个常用到,可以选择进入哪个tmux |
ctrl+b t | 显示时钟。然后按enter键后就会恢复到shell终端状态 |
Ctrl+b q | 显示窗格编号 |
Ctrl+b x | 关闭当前窗格 |
Ctrl+b z | 当前窗格全屏显示,再使用一次会变回原来大小 |
Ctrl+b |
光标切换到其他窗格。 |
Ctrl+b Ctrl+o | 所有窗格向前移动一个位置,第一个窗格变成最后一个窗格 |
Ctrl+b Alt+o | 所有窗格向后移动一个位置,最后一个窗格变成第一个窗格 |
Ctrl+b Ctrl+ |
按箭头方向调整窗格大小 |
Ctrl+b |
切换到指定编号的窗口,其中的 |
基本概念
tmux有三个基本概念:
- 会话(Session)
- 窗口(Window)
- 面板(Pane)
窗格(Pane)操作
- % 左右平分出两个窗格
- “ 上下平分出两个窗格
- x 关闭当前窗格
- { 当前窗格前移
- } 当前窗格后移
- ; 选择上次使用的窗格
- o 选择下一个窗格,也可以使用上下左右方向键来选择
- space 切换窗格布局,tmux 内置了五种窗格布局,也可以通过 ⌥1 至 ⌥5来切换
- z 最大化当前窗格,再次执行可恢复原来大小
- q 显示所有窗格的序号,在序号出现期间按下对应的数字,即可跳转至对应的窗格
窗口(window)操作
tmux 除了窗格以外,还有窗口(window) 的概念。依次使用以下快捷键来熟悉 tmux 的窗口操作:
- c 新建窗口,此时当前窗口会切换至新窗口,不影响原有窗口的状态
- p 切换至上一窗口
- n 切换至下一窗口
- w 窗口列表选择,注意 macOS 下使用 ⌃p 和 ⌃n 进行上下选择
- & 关闭当前窗口
- , 重命名窗口,可以使用中文,重命名后能在 tmux 状态栏更快速的识别窗口 id
- 0 切换至 0 号窗口,使用其他数字 id 切换至对应窗口
- f 根据窗口名搜索选择窗口,可模糊匹配
Session操作
刚说完flag就倒了,本地使用还好,SSH的时候session真的必不可少。
下面列出一些session的操作
启动新会话:
1 | tmux [new -s 会话名 -n 窗口名] |
恢复会话:
1 | tmux at [-t 会话名] |
列出所有会话:
1 | tmux ls |
关闭会话:
1 | tmux kill-session -t 会话名 |
关闭所有会话:
1 | tmux kill-server |