Tmux 使用入门:会话、窗口、分屏和复制模式速查

Tmux 是程序员和运维人员非常值得掌握的终端复用工具。它可以让一个终端同时管理多个会话、窗口和分屏,即使 SSH 断开,后台任务也能继续运行。本文从安装、会话管理、窗口管理、面板分屏、复制模式到实际工作流,整理了一份适合日常使用的 Tmux 入门指南和快捷键速查表。

阅读时长: 6 分钟
共 2870字
作者: longlikun

如果你经常使用终端,尤其是需要 SSH 到服务器上工作,Tmux 是一个非常值得掌握的工具。

它解决的是一个很朴素的问题:不要让所有工作都绑死在一个终端窗口里

有了 Tmux,你可以在一个终端里同时打开多个会话、多个窗口、多个分屏。更重要的是,即使本地网络断开、SSH 断线,Tmux 里的任务也不会马上消失。重新连回服务器后,只要 attach 回原来的会话,就可以继续工作。

这篇文章不追求覆盖所有高级配置,而是整理一套最常用、最容易形成肌肉记忆的 Tmux 用法。

Tmux 是什么

Tmux 的全称是 Terminal Multiplexer,也就是终端复用器。

你可以把它理解成终端里的“工作区管理器”:

  • 会话(Session):一组长期存在的终端工作环境
  • 窗口(Window):一个会话里的多个终端页面
  • 面板(Pane):一个窗口里的多个分屏区域

这三个概念是理解 Tmux 的关键。

比如你正在维护一个网站,可以这样安排:

  • 一个 session 叫 blog
  • 一个 window 跑 Hugo 本地预览
  • 一个 window 编辑文章
  • 一个 window 查看 Git 状态
  • 某个 window 再拆成左右两个 pane,一个看日志,一个跑命令

这样终端不再是一堆散乱的窗口,而是一个可以恢复、可以组织、可以长期运行的工作空间。

安装 Tmux

macOS 可以用 Homebrew 安装:

brew install tmux

Ubuntu / Debian 可以使用:

sudo apt update
sudo apt install tmux

CentOS / Rocky Linux / AlmaLinux 可以使用:

sudo dnf install tmux

安装完成后,输入下面的命令检查版本:

tmux -V

第一个 Tmux 会话

直接输入:

tmux

你会进入一个新的 Tmux 会话。此时终端底部通常会出现一条状态栏,显示当前会话、窗口编号和主机名等信息。

更推荐的方式是创建一个命名会话:

tmux new -s blog

这样以后重新连接时就很清楚这个会话是做什么的。

会话管理命令

会话适合承载一个项目、一台服务器上的一组任务,或者一个长期运行的工作现场。

命令 说明
tmux 新建会话
tmux new -s 名字 新建命名会话
tmux ls 列出所有会话
tmux attach -t 名字 连接到指定会话
tmux kill-session -t 名字 删除指定会话

常见使用流程如下:

tmux new -s deploy

在里面执行部署、编译、同步文件等命令。需要离开时,不要直接关闭终端,而是先 detach:

Ctrl+B d

下次回来后:

tmux attach -t deploy

如果只是想快速接回最近的一个会话,也可以使用:

tmux attach

前缀键:先按 Ctrl+B

Tmux 的快捷键都有一个共同规则:先按前缀键,再按后续键

默认前缀键是:

Ctrl+B

比如 Ctrl+B d 的意思不是同时按三个键,而是:

  1. 先按住 Ctrl,再按 B
  2. 松开
  3. 再按 d

这个习惯一开始有点别扭,但用几天之后就会很自然。

会话快捷键

快捷键 说明
Ctrl+B d 离开当前会话,也就是 detach
Ctrl+B s 切换会话
Ctrl+B $ 重命名当前会话

其中最重要的是 Ctrl+B d

很多人刚开始使用 Tmux 时,会直接关闭终端窗口。这样虽然有时也能保留会话,但不是一个好习惯。更稳妥的方式是用 detach 明确告诉 Tmux:我只是暂时离开,这个会话继续留着。

detach 到底是什么意思

detach 可以理解为“从当前 Tmux 会话中脱离出来”。

它不会关闭会话,也不会终止会话里正在运行的命令。你只是从这个 Tmux 工作区退回到普通终端,后台的 Tmux session 仍然存在。

比如你在服务器上运行:

tmux new -s build
npm run build

构建过程还没结束,但你现在要离开电脑,或者网络可能会断开。此时按:

Ctrl+B d

你会回到普通 shell,Tmux 会话 build 会继续留在后台。之后重新登录服务器,再执行:

tmux attach -t build

就能回到刚才那个会话。

注意区分这几个动作:

操作 结果
Ctrl+B d detach,只是离开会话,会话继续存在
exit 退出当前 shell;如果这是窗口里的最后一个 shell,窗口可能会关闭
Ctrl+B x 关闭当前面板
Ctrl+B & 关闭当前窗口
tmux kill-session -t 名字 删除整个 Tmux 会话

所以,日常使用 Tmux 时最推荐的习惯是:临时离开用 detach,确认不需要了再 kill-session

窗口管理

Window 可以理解为 Tmux 里的标签页。一个 session 下可以有多个 window。

快捷键 说明
Ctrl+B c 新建窗口
Ctrl+B w 列出所有窗口
Ctrl+B n 下一个窗口
Ctrl+B p 上一个窗口
Ctrl+B 数字 跳到第 N 个窗口
Ctrl+B , 重命名当前窗口
Ctrl+B & 关闭当前窗口

推荐给窗口起名字。比如:

  • editor
  • server
  • logs
  • git
  • db

重命名窗口的快捷键是:

Ctrl+B ,

命名之后,再用 Ctrl+B w 查看窗口列表时,会比默认的 bashzsh 清楚很多。

面板管理:终端里的分屏

Pane 是 Tmux 里最常用也最直观的功能,也就是分屏。

快捷键 说明
Ctrl+B % 左右分屏
Ctrl+B " 上下分屏
Ctrl+B 方向键 切换面板
Ctrl+B z 当前面板全屏 / 还原
Ctrl+B x 关闭当前面板
Ctrl+B Space 切换面板布局

比如在一个项目里,我通常会这样拆:

  • 左边编辑文件
  • 右上运行服务
  • 右下查看日志

左右分屏:

Ctrl+B %

上下分屏:

Ctrl+B "

如果某个面板临时需要看全屏,比如日志太长,可以使用:

Ctrl+B z

再按一次 Ctrl+B z 就会恢复原来的布局。

复制模式:在 Tmux 里滚动和复制

如果你在普通终端里习惯用鼠标滚动,进入 Tmux 后可能会发现滚动行为不太一样。这时需要使用复制模式。

快捷键 说明
Ctrl+B [ 进入复制模式,可以滚动翻页
q 退出复制模式
Space 开始选择文本
Enter 复制选中文本
Ctrl+B ] 粘贴

基本流程是:

  1. Ctrl+B [ 进入复制模式
  2. 用方向键、PageUp、PageDown 移动
  3. Space 开始选择
  4. 移动光标选中文本
  5. Enter 复制
  6. Ctrl+B ] 粘贴

如果你配置了 vi 模式,复制模式里的移动会更接近 Vim,比如使用 hjkl 移动。这属于后续进阶内容,刚开始不必强求。

一个实用的 Tmux 工作流

假设我们要在服务器上维护一个网站,可以这样开始:

tmux new -s web

第一个窗口用来编辑或查看代码:

Ctrl+B ,

把窗口命名为:

code

新建第二个窗口:

Ctrl+B c

命名为:

server

在里面启动服务或运行构建命令:

npm run dev

再新建第三个窗口,命名为 logs,用于查看日志:

tail -f app.log

如果要临时离开服务器:

Ctrl+B d

下次重新登录服务器后:

tmux attach -t web

你会回到之前的现场,窗口、分屏、运行中的命令都还在。

新手最应该记住的 10 个快捷键

刚开始不用记太多,先把下面 10 个练熟就够了:

快捷键 / 命令 用途
tmux new -s 名字 新建命名会话
tmux ls 查看会话列表
tmux attach -t 名字 回到指定会话
Ctrl+B d 离开会话
Ctrl+B c 新建窗口
Ctrl+B w 查看窗口列表
Ctrl+B % 左右分屏
Ctrl+B " 上下分屏
Ctrl+B 方向键 切换面板
Ctrl+B z 当前面板全屏 / 还原

这 10 个命令掌握以后,Tmux 已经可以覆盖大部分日常使用场景。

常见问题

关闭终端后任务还在吗?

如果任务是在 Tmux 会话里启动的,通常还在。

重新登录服务器后,执行:

tmux ls

找到对应会话,再执行:

tmux attach -t 会话名

为什么按快捷键没反应?

最常见原因是没有先按前缀键。比如新建窗口不是直接按 c,而是先按 Ctrl+B,松开后再按 c

另一个原因是终端或远程环境拦截了某些按键。遇到这种情况,可以先确认普通的 Ctrl+B d 是否可用。

Tmux 和 nohup 有什么区别?

nohup 更像是让单个命令在后台继续跑,适合简单任务。

Tmux 则是保留整个终端工作环境,适合需要反复查看、交互、切换窗口和分屏的场景。

简单说:

  • 只想让一个命令不断运行:可以用 nohup
  • 想保留一整个终端工作现场:用 tmux

一个服务器上可以开多个 Tmux 会话吗?

可以,而且很推荐。

例如:

tmux new -s blog
tmux new -s api
tmux new -s deploy

不同项目分成不同 session,管理起来更清楚。

总结

Tmux 最有价值的地方,不只是“终端分屏”,而是让终端工作变得可恢复、可组织、可长期运行。

如果你只是偶尔用命令行,Tmux 可能不是必须的。但只要你经常 SSH 到服务器、跑长任务、看日志、部署项目,Tmux 很快就会变成离不开的工具。

建议从这几个动作开始练:

  1. 每个项目都用 tmux new -s 项目名 创建独立会话
  2. 离开服务器前用 Ctrl+B d detach
  3. 用窗口区分 codeserverlogs
  4. 用面板同时查看命令输出和日志
  5. 遇到长输出时用 Ctrl+B [ 进入复制模式查看

先把这些基础动作变成习惯,再考虑改前缀键、开鼠标模式、配置主题和插件。Tmux 的核心能力不在配置文件里,而在你愿意把终端工作流组织起来。

使用 Hugo 构建
主题 StackJimmy 设计