tmux 使用技巧
1. 为什么你需要一个终端复用器
先说说我自己的经历。早年间我用终端干活,最头疼的就是两件事:一是本地开发到一半,SSH 连接一断,所有未保存的东西全没了;二是开了一堆终端窗口,切来切去自己都分不清哪个是哪个。后来同事甩给我一句话:用 tmux。当时我还不以为意,觉得不过是个窗口管理工具,能有多大本事。结果真正用顺了以后,我发现自己再也回不去了——现在只要是在命令行环境里干活,我第一件事永远是敲 tmux,这已经成了肌肉记忆。
tmux 是个终端复用器,英文叫 Terminal Multiplexer。它最核心的价值,就是让你在一个终端窗口里同时管理多个会话、多个窗口、多个面板,并且断线重连后所有东西都还在。听起来很简单,但实际用起来,它对工作流的改变是革命性的。举个最直观的场景:你在服务器上跑一个数据迁移脚本,可能要跑两三个小时,如果直接在 SSH 里跑,中途网络抖动一下,脚本就断了,搞不好还得重新来。但是放到 tmux 里,你完全可以退出 SSH、关上电脑,第二天再连回来,脚本照样在跑,输出照样在滚动。就冲这一点,tmux 就值得你花半小时学会。
这篇文章我不打算写成像 man 手册那样的枯燥文档,我会按照自己从入门到熟练的真实路径,把 tmux 的安装、核心概念、常用操作、个性化配置、进阶技巧,以及我踩过的一些坑,全部捋一遍。不管你是刚接触命令行的新手,还是已经用了一段时间但总感觉没吃透的老手,这篇应该都能给你一点有用的东西。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心概念与安装:这三层结构搞懂了就成功了一半
2.1 Session、Window、Pane 的关系
很多人学 tmux 觉得难,不是因为操作复杂,而是因为没搞明白它那套层级结构。tmux 的逻辑其实特别简单,就三个层级:会话(Session)、窗口(Window)、面板(Pane)。
你可以把整个 tmux 想象成一栋办公楼。办公楼的入口是一个会话,也就是你与 tmux 之间建立的一条连接通道,会话保留着你的所有工作现场。办公楼里有多个办公室,每个办公室就是一个窗口,相当于浏览器里的一个标签页,每个窗口里跑着不同的任务。而每个办公室里可以划分出好几个工位,每个工位就是一个面板,相当于把一块屏幕切成几块,每块跑一个独立的任务。
我打个比方你就懂了。你开了一个会话叫 work,这个会话里开了两个窗口,一个写代码,一个跑测试;写代码那个窗口里又分成了上下两块面板,上面是 vim,下面是实时预览。这就是 tmux 的完整结构。搞懂了这层关系,你再去看快捷键就不会晕:会话级的操作管开关、切换,窗口级的操作管新建、切换,面板级的操作管分割、调整大小。
2.2 安装 tmux 的几种方式
tmux 的安装非常简单,各个系统都有成熟的包管理器。我实测过的几种方式如下:
在 Debian / Ubuntu 系上装,命令是:
bash复制sudo apt install tmux
在 CentOS / RHEL 系上装:
bash复制sudo yum install tmux
在 macOS 上装,我一般用 Homebrew:
bash复制brew install tmux
这里需要特别提醒一下版本问题。tmux 的很多高级配置语法在不同版本之间是有差异的,早期的 2.x 版本和现在的 3.x 版本,配置命令略有不同。如果你用的系统自带的源版本比较老,我建议你优先考虑编译安装新版本,或者直接从 GitHub 拉最新的 release。我在生产环境上吃过大亏,辛辛苦苦写完一套配置,结果换到另一台版本老一点的机器上直接报语法错误,这种东西一踩一个准。
提示:装完先敲
tmux -V看一眼版本号,心里有数。3.0 以上和 2.x 的配置语法差距不小,网上的配置参考帖都要先看清版本再抄。
3. 基础操作:先从会话和窗口用起来
3.1 会话的创建、退出与重连
安装好之后,第一步就是新建一个会话。在终端里直接输入:
bash复制tmux new -s work
这里的 -s 参数是给会话起个名字,叫 work。实际工作中强烈建议给会话起能表达含义的名字,比如 dev、prod、monitor 之类的。不然你开了五六个无名的会话,连自己都分不清哪个是哪个,直接用 tmux ls 一列,全是数字编号,那画面太美我不敢看。
如果你不加 -s 参数直接敲 tmux new,tmux 会自动分配一个从 0 开始的编号。启动之后就进入 tmux 界面了,你会在屏幕底部看到一条绿色的状态栏,这就是 tmux 在告诉你:你现在在 tmux 里了。
在会话里干活干到一半,你想暂时退出,但又不想中断进程,这时千万别直接关终端,正确的做法是“脱离会话”,tmux 术语叫 detach。默认快捷键是:
bash复制Ctrl+b 然后按 d
按完这个组合键,你会回到普通的 shell 提示符,看起来好像“退出”了 tmux,但实际上 tmux 里的所有东西都还在后台好好地跑着。你可以关掉终端、可以拔掉网线,什么都不影响。
要重新连回这个会话,命令是:
bash复制tmux attach -t work
如果不记得会话叫什么名字了,先看列表:
bash复制tmux ls
这个命令会列出所有正在运行的会话。我日常用得最多的三个命令就是 n
