我们来系统地学习 tmux。我会把它分成几个部分,从核心概念到日常使用,并提供记忆技巧。
第一步:核心概念(为什么是这样?)
要掌握 tmux,首先要理解它的三个核心概念。把这个记在脑子里,所有命令都会变得有意义。
想象一下 tmux 是一个虚拟的终端工作区:
-
会话 (Session): 这是最高层级。一个会话好比一个独立的工作项目。比如,你可以一个会话叫 project-A,另一个叫
project-B。你可以在它们之间切换,而且当你关闭电脑上的终端窗口时,会话并不会死掉,它会在后台继续运行。这就是 tmux 最大的魔力——工作区持久化。
-
窗口 (Window): 在一个会话内部,可以有多个窗口。这就像浏览器的标签页 (Tabs)。每个窗口都是一个全屏的终端。比如,在 project-A
这个会话里,你可以有一个窗口用于编辑代码,一个窗口用于运行服务器,另一个窗口用于查看日志。
-
窗格 (Pane): 在一个窗口内部,你可以把屏幕切分成多个小块,每一块就是一个窗格。这让你可以在同一个屏幕上,同时看到多个终端命令的运行情况。比如,在一个窗
口里,左边窗格写代码,右上窗格看日志,右下窗格执行 git 命令。
层级关系记忆: 会话 (Session) > 窗口 (Window) > 窗格 (Pane)。一个项目包含多个任务,一个任务占据一个全屏,一个全屏可以分成几小块来看。
第二步:命令的“钥匙”——前缀键 (Prefix)
几乎所有的 tmux 命令都需要先按下一个“前缀组合键”,默认是 Ctrl + b。
为什么需要前缀?
因为 tmux 需要区分你是想给 tmux 下命令,还是想给终端里的程序(比如 bash、vim)下命令。按下 Ctrl + b 就等于告诉
tmux:“嘿,注意了,下一个按键是给你的命令!”
记忆技巧:
把 Ctrl + b 当成打开 tmux 命令模式的“钥匙”。每次想操作窗口或窗格时,就先按 Ctrl +b,松开,然后再按具体的功能键。
第三步:会话管理 (项目的开始与结束)
这是你和 tmux 交互的起点。这些命令直接在你的普通终端里输入,而不是在 tmux 内部。
- 新建会话:
1 tmux new -s my-session
* 解释: tmux new 就是新建一个会话。-s 是 session 的缩写,后面跟上你给会话起的名字。
* 记忆: 给会话起名是好习惯,方便以后找回。比如 tmux new -s web-dev。
- 列出所有会话:
1 tmux ls
* 解释: ls 是 list 的缩写,这是 Linux/macOS 用户非常熟悉的命令。
* 记忆: 和列出文件一样,tmux ls 就是列出所有会-话。
-
断开连接 (Detach):
在 tmux 会话中,按下 Ctrl + b,然后按 d。
-
解释: 这会让你从当前会话中“脱离”,但会话以及里面的所有进程会继续在后台运行。这是 tmux 的核心功能。
-
记忆: d 代表 detach (分离)。
-
-
重新连接 (Attach):
1 tmux attach -t my-session
* 解释: attach 就是“附着”的意思。-t 是 target (目标) 的缩写,告诉 tmux 你要连接到哪个会话。
* 记忆: attach -t <目标会话>,非常直观。
第四步:窗口操作 (像浏览器标签页一样)
现在你已经在一个会话里了。以下所有命令都需要先按前缀 Ctrl + b。
-
创建新窗口: Ctrl + b 然后 c
- 记忆: c 代表 create (创建)。
-
切换到下一个窗口: Ctrl + b 然后 n
- 记忆: n 代表 next (下一个)。
-
切换到上一个窗口: Ctrl + b 然后 p
- 记忆: p 代表 previous (上一个)。
-
切换到指定编号的窗口: Ctrl + b 然后 0, 1, 2...
-
解释: 每个窗口都有一个编号,从 0 开始。
-
记忆: 和数组下标一样,直接按数字。
-
-
重命名当前窗口: Ctrl + b 然后 , (逗号)
-
解释: 给窗口起个有意义的名字(比如 "API Server", "Database")能让你更容易分辨。
-
记忆: 逗号在写作中用来分隔和标注,这里用来给窗口“做标注”。
-
-
关闭当前窗口: Ctrl + b 然后 &
-
解释: 这会关闭整个窗口以及里面的所有窗格。
-
记忆: 这个符号不太直观,可以记成“这个窗口 和 (&) 里面的东西都不要了”。
-
第五步:窗格操作 (分屏大师)
这是在单个屏幕内进行多任务处理的关键。同样,先按前缀 Ctrl + b。
-
垂直分割 (左右分屏): Ctrl + b 然后 %
- 记忆: % 符号里有两个小圈圈,是左右排列的。
-
水平分割 (上下分屏): Ctrl + b 然后 " (双引号)
- 记忆: " 符号是两个小竖线,是上下排列的。
-
在窗格间切换: Ctrl + b 然后 方向键 (↑ ↓ ← →)
- 记忆: 这是最直观的命令,想去哪个方向的窗格,就按哪个方向键。
-
关闭当前窗格: Ctrl + b 然后 x
-
解释: 这会提示你确认是否关闭。
-
记忆: x 通常代表关闭或退出。
-
-
最大化/还原当前窗格 (Zoom): Ctrl + b 然后 z
-
解释: 临时将当前窗格放大到整个窗口,方便查看内容。再按一次可以恢复。
-
记忆: z 代表 zoom (缩放)。
-
总结与实践
我们来串联一个实际场景:
-
打开终端,输入 tmux new -s my-work 启动一个名为 "my-work" 的新会话。
-
你现在在窗口 0。按 Ctrl + b 然后 ",将屏幕上下分成两块。
-
按 Ctrl + b 然后 ↑,回到上面的窗格。
-
按 Ctrl + b 然后 %,将上面的窗格左右分开。
-
现在你有了三个窗格。用 Ctrl + b + 方向键 自由切换。
-
按 Ctrl + b 然后 c,创建一个全新的窗口 (窗口 1)。
-
按 Ctrl + b 然后 p,回到上一个窗口 (窗口 0)。
-
按 Ctrl + b 然后 d,断开会话。你的终端回到了普通模式,但 my-work 仍在后台运行。
-
在普通终端里输入 tmux attach -t my-work,看,你又回到了刚才的工作区!
从这个流程开始练习,每天用 tmux 工作,很快这些命令就会成为你的肌肉记忆。如果忘了,就回来看看这个指南或者输入 tmux ls 提醒自己有哪些会话。