什么是tmux

Tmux 是一个终端复用器(terminal multiplexer)

tmux 有主要两个用途:

  1. 分屏。既可以同时使用多个命令行;
  2. 会话与窗口解绑。当窗口意外关闭时,会话并不会终止,后面需要的时候,会话可以再次绑定窗口。尤其当使用SSH远程登录计算机时,可以不受断网的影响。

基本使用

安装tmux

# Ubantu or Debian
sudo apt-get install tmux

# Centos or Fedora
sudo yum install tmux

# Mac
brew install tmux

启动、退出

tmux

在终端输入以上命令即可启动tmux,启动后终端底部会显示一个状态栏。

左侧是窗口信息(编号和名称),右侧是系统信息。

如何使用tmux_效率工具

按下Ctrl + d或者在终端输入exit即可退出tmux。

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 号会话。

使用编号区分会话,不太直观,更好的方法是为会话起名。

tmux new -s <your-session-name>

上面命令新建一个指定名称的会话。

分离会话

在 Tmux 窗口中,按下 Ctrl+b d 或者输入 tmux detach 命令,就会将当前会话与窗口分离。

tmux detach

上面命令执行后,就会退出当前 Tmux 窗口,但是会话和里面的进程仍然在后台运行。

tmux ls 命令可以查看当前所有的 Tmux 会话。

tmux ls
# or
tmux list-session

接入会话

在终端输入tmux attach用于重新接入某个已存在的会话。

# 使用会话编号接入会话
tmux attach -t 0

# 使用会话名称接入会话
tmux attach -t <your-session-name>

kill会话

在终端输入tmux kill-session用于杀死某个已存在的会话。

# 使用会话编号结束会话
tmux kill-sesion -t 0

# 使用会话名称结束会话
tmux kill-sesion -t <your-session-name>

切换会话

在终端输入tmux switch以切换会话。

# 使用会话编号切换会话
tmux switch -t 0

# 使用会话名称切换会话
tmux switch -t <session-name>

重命名会话

在终端输入tmux rename-session以重命名会话。

tmux rename-session -t 0 <new-name>

以上命令会将0号会话重命名。

快捷键

tmux大部分操作都可以用快捷键来代替。

使用快捷键的前提是先按下了Ctrl + b

使用tmux list-keys可以列出所有快捷键。

tmux list-keys

会话快捷键

  • s :列出所有会话,也可以在列表中用鼠标或上下键切换会话
  • d :离开当前会话
  • $ :重命名当前会话

窗口快捷键

  • c : 创建一个新窗口
  • n : 切换到下一个窗口
  • w : 从列表中选择窗口
  • <0~9> : 切换到指定标号的窗口,编号显示在状态栏
  • ,(这是一个英文逗号) : 将窗口重命名

一个session中可以有很多个窗口,可以在状态栏中查看,如:

如何使用tmux_tmux_02

其中:

[7]表示的是当前会话的名称。

0:zsh-表示的是0号窗口,zsh是窗口的名字。

窗口名字后的*号代表当前显示的窗口。

而右侧显示的是用户名、当前时间、当前日期。

窗格快捷键

  • % : 将窗口分成左右两个窗格。
  • "(这是一个英文双引号): 将窗口分成上下两个窗格。
  • z : 将当前窗格全屏显示,再按一次恢复。
  • q : 显示窗格编号。
  • t : 再当前窗格显示时间。
  • o : 将光标切换到下个一个窗格。
  • \ : 将光标切换到其他窗格。使用上下左右方向键进行切换
  • { : 将当前窗格左移
  • } : 将当前窗格右移
  • Ctrl + o : 将当前窗格上移
  • Alt + o : 将当前窗格下移
  • space(空格键) : 切换窗格布局。
  • x : 删除当前窗格。

配置tmux支持鼠标

鼠标支持的内容:

  • 用鼠标点击窗格来激活该窗格;
  • 用鼠标拖动调节窗格的大小(拖动位置是窗格之间的分隔线);
  • 用鼠标点击来切换活动窗口(点击位置是状态栏的窗口名称);
  • 开启窗口/窗格里面的鼠标支持,用鼠标回滚显示窗口内容,按下shift的同时用鼠标选取文本,使用 ctrl+shift+c、ctrl+shift+v 的方式进行复制粘贴。

配置方式为在 ~/.tmux.conf 文件中,增加:

set-option -g mouse on

参考文章

  1. https://zhuanlan.zhihu.com/p/137715607
  2. https://www.cnblogs.com/niuben/p/15983908.html
  3. https://www.ruanyifeng.com/blog/2019/10/tmux.html
  4. https://blog.csdn.net/CSSDCC/article/details/121231906