Tmux is a terminal multiplexer for Unix-like systems. It allows users to create and manage multiple terminal sessions within a single terminal window or console.

Tmux provides many features that are useful for working in a command-line environment. For example, it allows users to detach and reattach sessions, which means that users can start a session, disconnect from it and then reconnect to it later. This feature is particularly useful for long-running tasks that continue even after the user has logged out or disconnected from the network.

1. Session 会话

可以理解为一个连接,tmux其实是提供了一个终端服务,这个服务可以允许我们创建多个终端会话。

1.1 创建匿名和命名的会话

1
2
tmux new
tmux new -s <session-name>

创建后会自动进入该会话的窗口(下一节详细说明窗口)。

1.2 离开会话

1
ctrl+b d

即离开当前的会话,回到系统的终端窗口。tmux会话的一大优点是不会随着终端gui的关闭而停止,会话仍保持后台运行,后续可通过attach命令重新进入。

1.3 查看会话列表及进入会话

我们可以同时运行多个会话,互不干扰,查看会话列表的命令为

1
tmux ls


第一列就是会话的名字,进入指定会话命令为

1
tmux attach -t <session-name>

这里-t表示target。

1.4 退出会话(删除)

1
2
3
4
# 会话内
exit
# 会话外/内
tmux kill-session -t <session-name>

这是彻底退出会话,不会保留后台。

1.5 重命名会话

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

2. Window 窗口

每次进入会话看到的都是一个会话窗口,而实际上tmux允许我们在一个session开启多个窗口,窗口可以简单理解为一个个tab页

2.1 新窗口

1
ctrl+b c

这个动作开启了一个新窗口,并自动进入新窗口。可以通过下方状态栏观察。

2.2 窗口跳转

那如果我想跳回去之前的窗口,可以通过命令

1
ctrl+b <window-name>

2.3 窗口重命名

这时候我们发现,这些窗口名都是数字,开多了自己都不知道往哪找想要的窗口了,那么,可以把窗口改个容易识别的名字,这样就知道每个窗口在做什么啦。

1
ctrl+b ,

2.4 关闭窗口

最后,当不再使用某个窗口,可以关掉

1
ctrl+d或exit

3. Pane 面板

最后的最后,如果你的屏幕足够大,一个窗口只能同时跑一个命令不是很浪费?tmux提供了多面板支持,可以把当前窗口一分为2、3、4…

3.1 水平划分

1
ctrl+b %

效果如下

3.2 垂直划分

1
ctrl+b "

效果如下

当然,水平和垂直划分可以随意组合

3.3 pane间切换

这么多面板,怎么跳到指定的那一个,当然不是用鼠标点,我们还是用ctrl+b命令,结合上下左右方向键就可以切换了。

3.4 关闭pane

如果觉得太凌乱,就关掉几个pane吧,命令和关窗口一样。

以上。