文章目录
一、功能
(1)分屏
(2) 允许断开Terminal连接后,继续运行进程
1.1 结构
一个tmux可以包含多个session(会话),一个session可以包含多个window,一个window可以包含多个pane。
在 tmux 中,你可以创建多个会话(session),每个会话会默认创建一个窗口,而每个窗口(window)又会默认创建一个窗格(pane),每个窗格都对应一个伪终端用于执行命令。简单来讲可以把它们看成是分组的关系,每个组内可以有多个终端用来执行命令。而 tmux基本的操作无非就是基于会话,窗口和窗格对终端进行管理。
二、基本用法
2.1 安装
Tmux 一般需要自己安装,Ubuntu没有自带。
# Ubuntu 或 Debian
$ sudo apt-get install tmux
# CentOS 或 Fedora
$ sudo yum install tmux
# Mac
$ brew install tmux
2.2 启动与退出
安装完成后,键入tmux命令,就进入了 Tmux 窗口。
$ tmux
上面命令会启动 Tmux 窗口,底部有一个状态栏。状态栏的··左侧是窗口信息(编号和名称),右侧是系统信息。
按下Ctrl+d
或者显式输入exit
命令,就可以退出 Tmux 窗口。
$ exit
2.3 前缀键
Tmux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl+b
,即先按下Ctrl+b
,快捷键才会生效。
举例来说,帮助命令的快捷键是Ctrl+b ?
。它的用法是,在 Tmux 窗口中,先按下Ctrl+b
,再按下?
,就会显示帮助信息。
然后,按下ESC
键或q
键,就可以退出帮助。
三、会话(Session)管理
3.1 新建会话
第一个启动的 Tmux 窗口,编号是0
,第二个窗口的编号是1
,以此类推。这些窗口对应的会话,就是 0
号会话、1
号会话。
==没进入会话前,在终端窗口创建一个新对话,下面是命令:
$ tmux new -s <session-name>
查看session名字
要查看tmux当前会话的名称,可以使用以下命令:
tmux display-message -p "#S"
重命名session
使用编号区分会话,不太直观,更好的方法是为会话起名。
要重命名tmux会话,可以使用以下命令或者快捷键ctrl+b $
:
tmux rename-session -t <会话名称或编号> <新会话名称>
例如,要将名为“0”的会话重命名为“session0”,可以执行以下命令:
tmux rename-session -t 0 session0
注意:重命名会话后,新的会话名称将取代旧的会话名称,并且在其他会话中也将显示新的会话名称。
3.2 分离会话
在Tmux窗口中,按下ctrl+b d
或者输入以下命令,就会将当前session与窗口分离,session转到后台执行。每次从一个session分离出来(也就是ctrl+b d
),后台就会创建一个新的session。
$ tmux detach
列出所有会话:
$ tmux list
上面命令执行后,就会退出当前 Tmux 窗口,但是会话和里面的进程仍然在后台运行。
3.3 接入会话
tmux attach`命令用于重新接入某个已存在的会话。
假设你已经在终端中启动了一个Tmux会话,并且在该会话中运行了一些程序。然后,你使用tmux detach
命令或Ctrl+b d
快捷键分离了会话,回到了常规的终端。
一段时间后,你想重新接入之前分离的Tmux会话。在终端中输入以下命令:
tmux attach -t<session-name>
3.4 杀死对话
tmux kill-session
命令用于杀死某个会话。
# 使用会话编号,假如你想杀死编号0这个对话
$ tmux kill-session -t 0
# 使用会话名称
$ tmux kill-session -t <session-name>
3.5 切换对话
tmux switch
命令用于切换会话。
# 使用会话编号
$ tmux switch -t 0
# 使用会话名称
$ tmux switch -t <session-name>
3.6 会话快捷键
下面表格是会话的快捷键:
快捷键 | 说明 |
---|---|
Ctrl + b | 前缀键(两个一起按下,然后一起松开) |
Ctrl + b $ | 重命名当前会话。 |
Ctrl + b d | 分离当前会话(离开终端但不停止当前命令) |
Ctrl + b s | 列出所有会话 |
四、窗口(Window)管理
Tmux的一个会话里可以有多个窗口
4.1 新建窗口
tmux new-window
命令用来创建新窗口,快捷键:ctrl+b c
。
默认创建窗口:
# 默认窗口名字是bash[编号]
$ tmux new-window
指定名称窗口:
# 新建一个指定名称的窗口
$ tmux new-window -n <window-name>
4.2 切换窗口
tmux select-window
命令用来切换窗口,快捷键:ctrl+b p(上一个pre)
ctrl+b n(下一个next)
ctrl+b [编号number]
# 切换到指定编号的窗口
$ tmux select-window -t <window-number>
# 切换到指定名称的窗口
$ tmux select-window -t <window-name>
这里就不放图片了哈。根据上面的图片可以自己试试哦,相信你一定可以弄明白session和window的去别的😊😊😊
4.3 重命名窗口
tmux rename-window
命令用于为当前窗口起名(或重命名),快捷键:ctrl+b ,
。
$ tmux rename-window <new-name>
感兴趣的自己试着在Ubuntu里敲这个命令哈~
4.4 窗口快捷键
快捷键 | 说明 |
---|---|
Ctrl + b | 前缀键(两个一起按下,然后一起松开) |
Ctrl + b c | 创建一个新窗口,状态栏会显示多个窗口的信息。 |
Ctrl + b p | 切换到上一个窗口(按照状态栏上的顺序)。 |
Ctrl + b n | 切换到下一个窗口。 |
Ctrl + b nunber | 切换到指定编号的窗口,其中的是状态栏上的窗口编号。 |
Ctrl + b w | 切换到指定编号的窗口,其中的是状态栏上的窗口编号。 |
Ctrl + b , | 窗口重命名。 |
五、窗格(pane)管理
Tmux 可以将窗口分成多个窗格(pane),每个窗格运行不同的命令。以下命令都是在 Tmux 窗口中执行。
5.1 划分窗格
tmux split-window
命令用来划分窗格,快捷键:ctrl+b %
划分左右两个窗格 ctrl+b
‘’ 划分上下两个窗格。
# 划分上下两个窗格
$ tmux split-window
# 划分左右两个窗格
$ tmux split-window -h
5.2 移动光标
tmux select-pane
命令用来移动光标位置。这里就不写快捷键了哈😌,下面会全部列出。
# 光标切换到上方窗格
$ tmux select-pane -U
# 光标切换到下方窗格
$ tmux select-pane -D
# 光标切换到左边窗格
$ tmux select-pane -L
# 光标切换到右边窗格
$ tmux select-pane -R
5.3 交换窗格位置
tmux swap-pane
命令用来交换窗格位置。
# 当前窗格上移
$ tmux swap-pane -U
# 当前窗格下移
$ tmux swap-pane -D
5.4 窗格快捷键
下面是一些窗格操作的快捷键。
快捷键 | 说明 |
---|---|
Ctrl+b | 前缀键(两个一起按下,然后一起松开) |
Ctrl+b % | 划分左右两个窗格。 |
Ctrl+b ‘’ | 划分上下两个窗格。 |
Ctrl+b arrow key | 光标切换到其他窗格。是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键。 |
Ctrl+b ; | 光标切换到上一个窗格。 |
Ctrl+b o | 光标切换到下一个窗格(一行中的左到右再到下一行的左到右…) |
Ctrl+b { | 当前窗格与上一个窗格交换位置。 |
Ctrl+b } | 当前窗格与下一个窗格交换位置。 |
Ctrl+b Ctrl+o | 所有窗格向前移动一个位置,第一个窗格变成最后一个窗格。 |
Ctrl+b Alt+o | 所有窗格向后移动一个位置,最后一个窗格变成第一个窗格。 |
Ctrl+b x | 关闭当前窗格。 |
Ctrl+b ! | 将当前窗格拆分为一个独立窗口。 |
Ctrl+b z | 当前窗格全屏显示,再使用一次会变回原来大小。 |
Ctrl+b q | 显示窗格编号。 |
tmux 中还有另一类快捷键,它们的触发方式与上面有所区别。这里以 Ctrl+b Ctrl+o 为例,需要先Ctrl+b 按下 ,然后 Ctrl 按住不动, 松开 按键b,然后在按下按键 o。这样的快捷键触发方式在 Visual Studio Code中很常见,但在 tmux 中只有几个快捷键的触发方式是这样子的。
- 按下Ctrl+b
- 松开b
- 按下o
而对于快捷键Ctrl+b Alt+o ,则需要先按下Ctrl+b ,然后松开Ctrl+b ,接着按下 Alt+o 。
- 按下Ctrl+b
- 松开Ctrl+b
- 按下Alt+o
六、结语
Tmux是很好用的工具,虽然快捷键对于新手来说有些繁琐,一旦你熟练后它一定会给你很大的帮助的。如果文章有错的地方请在评论区指出哦,大家一起讨论学习。
我是WX_Chen,我们下期见🤗🤗🤗