Tmux

Tmux

Tmux概念

Tmux(终端多路复用器)是一个在终端会话中提供多窗口和面板管理的工具。它允许你在一个终端窗口中同时运行多个终端会话,以便更有效地管理和组织你的工作环境

Tmux 就是会话与窗口的”解绑”工具,将它们彻底分离:

  1. 它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
  2. 它可以让新窗口”接入”已经存在的会话。
  3. 它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
  4. 它还支持窗口任意的垂直和水平拆分。

Tmux的层次逻辑——树:

  • tmux服务可以开启多个session(会话)
  • 一个session(会话)可以开多个window(窗口)
  • 一个window(窗口)可以分多个pane(窗格)

安装

  1. Ubuntu 或 Debian

    1
    sudo apt-get install tmux
  2. CentOS 或 Fedora

    1
    sudo yum install tmux
  3. Mac

    1
    brew install tmux

基本使用

前缀键

Tmux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是ctrl+b,即先按下ctrl+b,快捷键才会生效。

举例来说,帮助命令的快捷键是ctrl+b ?。它的用法是,在 Tmux 窗口中,先按下ctrl+b,松开后再按下?,就会显示帮助信息。按下ESC 键或q键,就可以退出帮助。

tmux操作

1. 启动tmux

1
tmux
Tmux

[0] 0:zsh* :中括号中0表示当前session-name,紧跟着的0代表window的序号,第一个window显示为0,环境为zsh,*意味着当前处于活跃状态的窗口。

"MacBookAir.local" :主机名

15:22 27- 2-24:当前时间

2. 退出tmux

tmux 窗口中按下 ctrl+d,或者按下 ctrl+b ,然后再按下 &,或者显式输入exit命令,退出 Tmux 窗口。

1
exit

3. 翻屏模式

tmux 窗口中按下 ctrl+b ,然后再按下 [进入翻屏模式,然后按q退出翻屏模式。

或者在 tmux 窗口中按下 ctrl+b ,然后摁下PgUp也可进入翻屏模式。(mac为fn+方向键

会话管理

1. 新建会话

1
tmux new -s <session-name>

此时可以看到原本 [0] 里面的 0 变成了设置的 session-name(表示会话名称,可以为字母或数字)

2. 会话分离

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

1
tmux detach

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

3. 接入会话

tmux attach命令用于重新接入某个已存在的会话。

1
2
3
4
5
6
# 使用会话编号(简写)
tmux a -t <session-number>
# 使用会话名称(<session-name>可以简写)
tmux attach -t <session-name>
# 使用全写
tmux attach-session -t <session-name>

4. 杀死会话

tmux kill-session命令用于杀死某个会话。

1
2
3
4
5
6
7
8
# 使用会话编号
tmux kill-session -t <session-number>
# 使用会话名称
tmux kill-session -t <session-name>
# 关闭所有的会话
tmux kill-serve
# 关闭除指定会话外的所有会话
tmux kill-session -a -t session-name

5. 切换会话

1
2
3
4
# 使用会话编号
tmux switch -t 0
# 使用会话名称
tmux switch -t <session-name>

6. 重命名会话

按下在tmux窗口中按下ctrl+b,然后再按下$,或者tmux rename-session命令用于重命名会话。

1
tmux rename-session -t <old-name> <new-name>

7. 列出所有会话

按下在tmux窗口中按下ctrl+b,然后再按下s,,然后用方向键进行操作,或者tmux ls命令用于列出所有会话。

1
tmux ls

窗口管理

1. 新建窗口

按下在tmux窗口中按下ctrl+b,然后再按下c,或者tmux new-window命令用来创建新窗口。创建一个新窗口,状态栏会显示多个窗口的信息。

1
2
3
tmux new-window
# 新建一个指定名称的窗口
tmux new-window -n <window-name>

2. 切换窗口

1
2
3
4
# 切换到指定编号的窗口
tmux select-window -t <window-number>
# 切换到指定名称的窗口
tmux select-window -t <window-name>

切换到上一个窗口:在 tmux 窗口中按下 ctrl+b ,然后再按下 p

切换到下一个窗口:在 tmux 窗口中按下 ctrl+b ,然后再按下 n

从列表中选择窗口:在 tmux 窗口中按下 ctrl+b ,然后再按下 w

切换到指定编号窗口:在 tmux 窗口中按下 ctrl+b ,然后再按下 <number>

3. 重命名窗口

tmux窗口中按下ctrl+b,然后再按下,,或者tmux rename-window命令用于为当前窗口起名(或重命名)。

1
tmux rename-window <new-name>

4. 在一个会话中的多个窗口中作出选择

tmux窗口中按下ctrl+b,然后再按下w

窗格操作

1. 划分窗格

划分上下两个窗格:在 tmux 窗口中按下 ctrl+b ,然后再按下 ",或者

1
tmux split-window

划分左右两个窗格:在 tmux 窗口中按下 ctrl+b ,然后再按下 % ,或者

1
tmux split-window -h

2. 移动光标

方向键移动光标:在 tmux 窗口中按下 ctrl+b ,然后再按下 方向键或按下 q,此时再摁下窗格的数字即可切换对应窗格。

移动光标到下一个窗格:在 tmux 窗口中按下 ctrl+b ,然后再按下 o

移动光标到上一次窗格:在 tmux 窗口中按下 ctrl+b ,然后再按下 ;

使用tmux select-pane命令用来移动光标到对应的窗格。

1
2
3
4
5
6
7
8
# 光标切换到上方窗格
tmux select-pane -U
# 光标切换到下方窗格
tmux select-pane -D
# 光标切换到左边窗格
tmux select-pane -L
# 光标切换到右边窗格
tmux select-pane -R

3. 交换窗格位置

当前窗格与上一个窗格交换位置:在 tmux 窗口中按下 ctrl+b ,然后再按下 {

当前窗格与下一个窗格交换位置:在 tmux 窗口中按下 ctrl+b ,然后再按下 }

使用tmux swap-pane命令用来交换窗格位置。

1
2
3
4
# 当前窗格上移
tmux swap-pane -U
# 当前窗格下移
tmux swap-pane -D

所有窗格向前移动一个位置,第一个窗格变成最后一个窗格:在 tmux 窗口中按下 ctrl+b ,然后再按下 ctrl+o

所有窗格向后移动一个位置,最后一个窗格变成第一个窗格:在 tmux 窗口中按下 ctrl+b ,然后再按下 alt+o

4. 关闭窗格

关闭当前窗格:在 tmux 窗口中按下 ctrl+b ,然后再按下 x

5. 其他快捷键

将当前窗格拆分为一个独立窗口:在 tmux 窗口中按下 ctrl+b ,然后再按下 !

当前窗格全屏显示:在 tmux 窗口中按下 ctrl+b ,然后再按下 z(再使用一次会变回原来大小)

调整当前窗格大小:在 tmux 窗口中按下 ctrl+b 不放,,然后再按 方向键调整当前窗格的大小

显示窗格编号:在 tmux 窗口中按下 ctrl+b ,然后再按下 q,此时再摁下窗格的数字即可切换对应窗格。

其他命令

1. 列出所有快捷键,及其对应的 Tmux 命令

1
tmux list-keys

2. 列出所有 Tmux 命令及其参数

1
tmux list-commands

3. 列出当前所有 Tmux 会话的信息

1
tmux info

4. 重新加载当前的 Tmux 配置

1
tmux source-file ~/.tmux.conf