在跑代码时经常需要监控多个终端,如果有很多个窗口的话会很影响心情。今天发现了tmux这个神器。感觉非常厉害。不过这个tmux似乎只能在Linux类操作系统上进行,windows下可能要借助wsl或者git bash进行。
我目前是在window终端中ssh到服务器上,服务器上安装了tmux。因此我可以直接在终端上使用tmux。
首先是理清楚一些概念:
- 服务器(server): 是后台运行的一个进程,负责管理和运行会话,关闭终端或者断开ssh后仍然会继续运行。
- 会话(session):是tmux的最高级别容器,包含多个窗口(window)。可以把会话是作用一个工作环境,包含终端会话和工作状态。可以持久存在,即使关闭了终端。之后可以重新连接和恢复
- 窗口(window):窗口可以理解为一个虚拟的终端界面。可以在每个窗口中创建多个垂直或者水平排列的面板(pane),这样一来终端会被分成多个部分,每个部分可以运行独立的指令。在一个窗口下运行相关的命令,比如在跑代码时同时观察显存的占用情况。
- 面板(pane):是窗口内可以调节大小的区域
然后是操作:
- 新建一个会话:
tmux # 新建一个无名称的会话
tmux new -s demo # 新建一个名称为demo的会话
- 断开会话:可以理解为暂时退出这个会话,用终端去做别的事情。也可以用快捷键(Ctrl+b+d, Ctrl+b是一个激活tmux快捷键模式的快捷键)
tmux detach # 断开当前会话,会话在后台运行
- 进入之前的会话:断开会话后,想要接着上次留下的现场继续工作,就要使用到tmux的attach命令了,语法为
tmux attach-session -t session-name
,可简写为tmux a -t session-name
或tmux a
。通常我们使用如下两种方式之一即可:
tmux a # 默认进入第一个会话
tmux a -t demo # 进入到名称为demo的会话
- 关闭会话:会话的使命完成后,一定是要关闭的。我们可以使用tmux的kill命令,kill命令有
kill-pane
、kill-server
、kill-session
和kill-window
共四种,其中kill-session
的语法为tmux kill-session -t session-name
。如下:
tmux kill-session -t demo # 关闭demo会话
tmux kill-server # 关闭服务器,所有的会话都将关闭
- 查看和切换会话
tmux list-session # 查看所有会话
tmux ls # 查看所有会话,提倡使用简写形式
如果刚好处于会话中怎么办?别担心,我们可以使用对应的tmux快捷键Ctrl+b + s
,此时tmux将打开一个会话列表,按上下键(⬆︎⬇︎)或者鼠标滚轮,可选中目标会话,按左右键(⬅︎➜)可收起或展开会话的窗口,选中目标会话或窗口后,按回车键即可完成切换。
-
切换面板
-
新增面板:在一个window中新增面板:新增水平面板:
Ctrl+b+%
,新建上下面板:Ctrl+b+"
关于复制粘贴、移动面板、共享终端(结对编程)可以参考这里