如何使用tmux(终端工具)
什么是tmux
Tmux 是一个终端复用器(terminal multiplexer)
tmux 有主要两个用途:
- 分屏。既可以同时使用多个命令行;
- 会话与窗口解绑。当窗口意外关闭时,会话并不会终止,后面需要的时候,会话可以再次绑定窗口。尤其当使用SSH远程登录计算机时,可以不受断网的影响。
基本使用
安装tmux
1 | # Ubantu or Debian |
启动、退出
1 | tmux |
在终端输入以上命令即可启动tmux,启动后终端底部会显示一个状态栏。
左侧是窗口信息(编号和名称),右侧是系统信息。
按下Ctrl + d
或者在终端输入exit
即可退出tmux。
1 | exit |
tmux术语
tmux 采用 client/server模型,主要有四个模块:
- server:服务。tmux运行的基础服务,以下模块均依赖于此服务;
- session:会话。一个服务可以包含多个会话;
- window:窗口。一个会话可以包含多个窗口;
- panel:窗格/面板。一个窗口可以包含多个窗格。
执行 tmux 命令时,即开启了一个服务,并创建了一个会话、窗口和窗格。
前缀键
Tmux
窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl+b
,即先按下Ctrl+b
,快捷键才会生效。
举例来说,帮助命令的快捷键是Ctrl+b ?
。它的用法是,在
Tmux
窗口中,先按下Ctrl+b
,再按下?
,就会显示帮助信息。
然后,按下 ESC 键或q
键,就可以退出帮助。
Tmux会话管理
新建会话
第一个启动的 Tmux 窗口,编号是 0
,第二个窗口的编号是
1
,以此类推。这些窗口对应的会话,就是 0 号会话、1
号会话。
使用编号区分会话,不太直观,更好的方法是为会话起名。
1 | tmux new -s <your-session-name> |
上面命令新建一个指定名称的会话。
分离会话
在 Tmux 窗口中,按下 Ctrl+b d
或者输入
tmux detach
命令,就会将当前会话与窗口分离。
1 | tmux detach |
上面命令执行后,就会退出当前 Tmux 窗口,但是会话和里面的进程仍然在后台运行。
tmux ls
命令可以查看当前所有的 Tmux 会话。
1 | tmux ls |
接入会话
在终端输入tmux attach
用于重新接入某个已存在的会话。
1 | # 使用会话编号接入会话 |
kill会话
在终端输入tmux kill-session
用于杀死某个已存在的会话。
1 | # 使用会话编号结束会话 |
切换会话
在终端输入tmux switch
以切换会话。
1 | # 使用会话编号切换会话 |
重命名会话
在终端输入tmux rename-session
以重命名会话。
1 | tmux rename-session -t 0 <new-name> |
以上命令会将0
号会话重命名。
快捷键
tmux大部分操作都可以用快捷键来代替。
使用快捷键的前提是先按下了Ctrl + b
使用tmux list-keys
可以列出所有快捷键。
1 | tmux list-keys |
会话快捷键
- s :列出所有会话,也可以在列表中用鼠标或上下键切换会话
- d :离开当前会话
- $ :重命名当前会话
窗口快捷键
- c : 创建一个新窗口
- n : 切换到下一个窗口
- w : 从列表中选择窗口
- <0~9> : 切换到指定标号的窗口,编号显示在状态栏
- ,(这是一个英文逗号) : 将窗口重命名
一个session
中可以有很多个窗口,可以在状态栏中查看,如:
其中:
[key]
表示的是当前会话的名称。
0:zsh-
表示的是0号窗口,zsh
是窗口的名字。
窗口名字后的*
号代表当前显示的窗口。
而右侧显示的是用户名、当前时间、当前日期。
窗格快捷键
- % : 将窗口分成左右两个窗格。
- "(这是一个英文双引号): 将窗口分成上下两个窗格。
- z : 将当前窗格全屏显示,再按一次恢复。
- q : 显示窗格编号。
- t : 再当前窗格显示时间。
- o : 将光标切换到下个一个窗格。
- <arrow key> : 将光标切换到其他窗格。使用上下左右方向键进行切换
- { : 将当前窗格左移。
- } : 将当前窗格右移。
- Ctrl + o : 将当前窗格上移。
- Alt + o : 将当前窗格下移。
- space(空格键) : 切换窗格布局。
- x : 删除当前窗格。
配置tmux支持鼠标
鼠标支持的内容:
- 用鼠标点击窗格来激活该窗格;
- 用鼠标拖动调节窗格的大小(拖动位置是窗格之间的分隔线);
- 用鼠标点击来切换活动窗口(点击位置是状态栏的窗口名称);
- 开启窗口/窗格里面的鼠标支持,用鼠标回滚显示窗口内容,按下shift的同时用鼠标选取文本,使用 ctrl+shift+c、ctrl+shift+v 的方式进行复制粘贴。
配置方式为在 ~/.tmux.conf 文件中,增加:
1 | set-option -g mouse on |