你是否曾因远程连接中断而丢失正在进行的工作?是否羡慕过大神们在同一个终端窗口里分割出多个面板,操作行云流水?如果你有这样的困扰或向往,那么 tmux 就是你需要的终极神器。
本文将从一个初学者的视角,带你系统性地了解 tmux 的核心概念和常见用法。无论你是开发者、运维工程师,还是只是希望提高终端效率的爱好者,这篇文章都能让你有所收获。
tmux 是一个终端复用器(Terminal Multiplexer)。简单来说,它是一个允许你在一个终端窗口中,创建并管理多个独立终端会话的工具。
它最核心的价值在于三点:
会话保持:你可以在服务器上开启一个 tmux 会话,然后放心地关掉电脑。当你重新连接时,所有工作现场(正在运行的程序、当前目录、输出历史)都完好无损。
窗口管理:在一个会话中,你可以像使用浏览器标签页一样,创建和管理多个窗口(Window),轻松在不同任务间切换。
布局灵活:你可以将一个窗口任意分割成多个窗格(Pane),同时查看或操作多个任务,无需在多个终端窗口间跳转。
tmux 通常可以通过系统的包管理器轻松安装:
Ubuntu/Debian: sudo apt install tmux
CentOS/RHEL: sudo yum install tmux
macOS (Homebrew): brew install tmux
安装完成后,在终端输入 tmux 即可启动一个新的会话,踏入 tmux 的世界。
tmux 的管理逻辑是一个清晰的树形结构:
会话 (Session):最高层级,代表一个独立的工作环境。你可以为不同项目(如 blog、project)创建不同的会话。
窗口 (Window):会话中的一个“标签页”。每个窗口都拥有一个独立的终端。
窗格 (Pane):窗口中的分割区域。通过分割窗格,你可以在一个窗口内同时显示多个终端。
所有 tmux 操作都围绕这三个层级展开,而其快捷键都以 前缀键(Prefix Key) 开始。默认的前缀键是 Ctrl+b。这意味着你需要先同时按下 Ctrl 和 b,松开后,再按下一个功能键。
💡 记住这个感觉:
Ctrl+b就像是告诉tmux“我要开始下指令了”,随后的按键才是具体的命令。
会话管理是使用 tmux 的第一步,也是保证任务持续运行的关键。
在普通终端中,使用以下命令创建会话:
当你想暂时离开,让任务(如编译代码、下载文件)在后台继续运行时,需要从会话中分离。
快捷键:按下 Ctrl+b,然后按 d。你会瞬间退出 tmux 回到普通终端,但会话中的所有内容都在后台稳定运行。
当你想重新连接时,首先需要查看有哪些会话在运行。
根据 tmux ls 输出的会话名,你可以选择性地进入会话。
重命名会话:在会话中,按 Ctrl+b,然后按 $。
切换会话:在会话中,按 Ctrl+b,然后按 s,会弹出一个会话列表,使用方向键选择并回车即可。
一个会话可以包含多个窗口,非常适合在同一个项目中按功能(如 editor、server、logs)进行分类。
| 快捷键 | 功能 |
|---|---|
Ctrl+b c | 创建一个新窗口 |
Ctrl+b , | 重命名当前窗口 |
Ctrl+b p / n | 切换到上一个 / 下一个窗口 |
Ctrl+b 0-9 | 直接跳转到对应编号的窗口 |
Ctrl+b w | 从窗口列表中选择一个窗口 |
Ctrl+b & | 关闭当前窗口(会提示确认) |
窗格是 tmux 最常用的功能,它能最大化地利用屏幕空间。
Ctrl+b %:在当前窗格的右侧,垂直(左右)分割出一个新窗格。
Ctrl+b ":在当前窗格的下方,水平(上下)分割出一个新窗格。
Ctrl+b 方向键:在相邻的窗格间移动光标。
Ctrl+b Ctrl+方向键:以 1 个单元格为单位,调整当前窗格的大小。
Ctrl+b Alt+方向键:以 5 个单元格为单位,调整当前窗格的大小(macOS 可能需调整终端设置)。
Ctrl+b Space:在 tmux 预设的几种布局(如平均分布、主区域最大化等)间循环切换。
Ctrl+b z:将当前窗格最大化(全屏),再次按下则恢复,非常适合临时聚焦某个窗格。
Ctrl+b x:关闭当前窗格(会提示确认)。
Ctrl+b !:将当前窗格拆分成一个独立的窗口。
Ctrl+b q:短暂显示每个窗格的数字编号,便于快速跳转。
在终端中滚动和复制文本有时不太方便。tmux 提供了“复制模式”来解决这个问题。
Ctrl+b [:进入复制模式,此时你可以自由滚动历史输出。
在复制模式中:
按 Space 开始选择文本。
按 Enter 复制选中的文本并退出复制模式。
按 / 或 ? 可以向下或向上搜索关键词。
Ctrl+b ]:粘贴最近复制的文本。
无需进入会话,即可创建一个后台会话并直接运行命令:
默认的 Ctrl+b 与终端内许多快捷键(如向后删除字符)冲突,容易误触。你可以通过编辑 ~/.tmux.conf 配置文件,将前缀键改为更顺手的 Ctrl+a。
使用 vim ~/.tmux.conf 或 nano ~/.tmux.conf 打开配置文件。
添加以下三行:
保存文件后,重新加载配置或在 tmux 中执行 Ctrl+b : 然后输入 source-file ~/.tmux.conf。
万一忘记快捷键,tmux 内置了完整的帮助列表。按下 Ctrl+b ?,即可看到所有快捷键的说明,按 q 退出。
tmux 的学习曲线或许有些陡峭,但其带来的效率提升是无可比拟的。我们快速回顾一下本文的核心内容:
核心三要素:会话(Session)、窗口(Window)、窗格(Pane)。
生命线操作:
开启:tmux new -s <name>
脱离:Ctrl+b d
恢复:tmux a -t <name>
分屏快捷键:% 垂直分割," 水平分割,方向键切换。
常用辅助:Ctrl+b z 全屏,Ctrl+b [ 滚动与复制。
掌握了这些,你已经可以自信地使用 tmux 来管理你的终端工作了。在实践中多多使用,很快你会发现,你已经离不开这个强大的工具了。祝你使用愉快!