Tmux 终端复用器速查指南:CLI 命令、快捷键与命令模式全解析
【免费下载链接】reference面向开发者的技术速查清单(Cheat Sheets)集合,整理常见技术、工具与开发流程,帮助快速查阅关键信息,提高开发效率。项目地址: https://gitcode.com/GitHub_Trending/referen/reference
本文是对 Quick Reference 技术速查清单仓库中 docs/tmux.md 的深度扩展,围绕 Tmux 最常用的 CLI 命令、前缀快捷键与命令模式展开,并补充了背后的概念模型与实战用法。读完本文,你将掌握会话(Session)、窗口(Window)、窗格(Pane)三级模型的日常操作,能够独立完成创建/附加/终止会话、拆分与导航窗格、复制模式取词,以及通过命令模式调整布局、管理缓冲区等完整操作。
理解 Tmux 的三级模型与前缀键
在记忆快捷键之前,先建立两个核心概念,它们是理解整份速查表的地图。
- 会话(Session):一个独立的后台工作环境,可以包含多个窗口。脱离终端后会话仍在后台运行,这是 Tmux "断线不丢工作" 的根基。
- 窗口(Window):相当于一个"标签页",每个会话可开多个窗口,窗口之间互不干扰。
- 窗格(Pane):窗口内的屏幕分割单元,可在同一窗口内并排运行多个程序(如编辑器、编译进程、日志输出)。
Tmux 的所有交互快捷键都以**前缀键(Prefix)**开头,默认前缀是Ctrl+b。按下前缀后松开,再按功能键即触发对应动作;例如Ctrl+b后按c表示新建窗口。前缀键可以通过set -g prefix C-a改为其他组合(见下文"环境与选项")。
Tmux CLI:不进入交互界面也能管理会话
Tmux 的 CLI 命令与交互快捷键是同一能力的两种入口。以下是 docs/tmux.md 中整理的常用 CLI 操作。
新建会话
不带任何参数直接启动,即可在当前终端创建一个新会话:
$ tmux $ tmux new $ tmux new-sessionnew、new-session与无参数tmux等价;在命令模式(前缀 +:)内还可以直接输入:new完成同样的事。为会话命名便于后续按名管理:
$ tmux new -s myname # 创建名为 myname 的新会话命令模式下对应写法为:new -s myname。
列出当前所有会话(无论是否附加):
$ tmux ls $ tmux list-sessionsls是list-sessions的别名;在会话内也可用快捷键Ctrl+b+s调出会话列表交互切换。
附加(attach)到已存在的会话
从外部终端回到某个后台会话称为"附加":
$ tmux a $ tmux at $ tmux attach $ tmux attach-session这四个写法等价,默认附加到最近一个会话。附加到指定名称的会话时使用-t参数:
$ tmux a -t myname $ tmux at -t myname $ tmux attach -t myname $ tmux attach-session -t myname-t是-target的缩写,是 Tmux 命令中"指定操作对象"的通用参数,后续的kill-session、swap-pane等命令同样适用。
终止(kill)会话
按名称删除会话,会话内的所有窗口与窗格会一并结束:
$ tmux kill-ses -t myname # 杀死/删除名为 myname 的会话 $ tmux kill-session -t myname删除除当前会话之外的所有会话:
$ tmux kill-ses -a删除除 myname 之外的所有会话(-a表示"除指定目标外"):
$ tmux kill-ses -a -t myname帮助与信息
$ tmux infotmux info输出当前 Tmux 服务器、各会话、窗口、窗格的详细信息(包括 PID、环境变量、绑定等),在排查问题时非常有用;该命令在"入门"场景中也常用来确认当前运行状态。
配置管理
Tmux 的启动配置默认位于~/.tmux.conf,修改后需重新加载:
$ tmux source-file ~/.tmux.conf查看当前生效的全部全局选项:
$ tmux show-options -gshow-options -g会将~/.tmux.conf中所有全局选项及其当前值一次性列出,是核对配置是否按预期生效的快速手段。
复制模式:像 Vim 一样选择文本
Tmux 的复制模式(Copy Mode)允许你用键盘在回滚缓冲区中选择并复制文本,其操作手感与 Vim 的选择方式高度相似。
| 命令 | 描述 | | :- | - | |Ctrl+b[| 进入复制模式 | |Space| 开始选择 | |Enter| 复制选择 | |q| 退出复制模式 | |Ctrl+b]| 粘贴 buffer_0 的内容 |
典型流程为:Ctrl+b+[进入复制模式 → 方向键移动到起点 →Space开始选择 → 移动选中区域 →Enter完成复制 →q退出 →Ctrl+b+]粘贴。复制的文本进入编号缓冲区(默认 buffer_0),详见下文"缓冲区与复制"一节。
Vim 联动:复制模式下若开启了 vi 模式(setw -g mode-keys vi),即可用 Vim 的动作键(如w、b、0、$等)快速移动光标。Vim 动作的完整速查见仓库内 Vim 备忘清单 - 动作 一节,二者配合可以大幅提升长文本选取效率。
Tmux 快捷键速查
入门:先学会"列出所有快捷键"
| 快捷键/命令 | 描述 | | :- | - | |Ctrl+b?| 列出所有快捷键绑定 |
Ctrl+b+?会以分页形式展示当前所有键绑定(即list-keys的交互形态),是新环境快速上手的第一入口。此外,终端内执行tmux info可显示每个会话、窗口、窗格等的实时状态,与快捷键列表互为补充。
窗格(Pane):拆分与导航
窗格是把一个窗口拆成多块屏幕的核心机制:
| 快捷键 | 描述 | | :- | - | |Ctrl+b"/%| 上下分割(",分隔线水平)/ 左右分割(%,分隔线垂直) | |Ctrl+b!| 将当前窗格独立成一个新窗口 | |Ctrl+bx| 杀死当前窗格 | |Ctrl+b<Arrow> | 按方向键导航窗格 | |Ctrl+bSpace| 循环切换窗格布局 | |Ctrl+b{/}| 向左 / 向右移动当前窗格 | |Ctrl+bo| 跳到下一个窗格 | |Ctrl+bz| 切换窗格全屏(放大/还原) | |Ctrl+b;| 切回最后一个窗格 | |Ctrl+bq| 短暂显示各窗格编号 | |Ctrl+bq0...9| 跳到编号为 # 的窗格 |
使用技巧:z全屏放大适合临时聚焦单个窗格写代码,再次按下还原;q后窗格角会闪现编号数字,此时直接按数字即可跳转;Space则能在预设布局(并排、上下、主从等)间轮换。
窗口(Window / Tabs)
窗口相当于浏览器标签页,是组织任务的第二层容器:
| 快捷键 | 描述 | | :- | - | |Ctrl+bc| 创建新窗口 | |Ctrl+bp/n| 上一个 / 下一个窗口 | |Ctrl+b"/%| 在窗口内上下 / 左右拆分窗格 | |Ctrl+bw| 列出所有窗口供选择 | |Ctrl+b,| 重命名当前窗口 | |Ctrl+bf| 按名称查找窗口 | |Ctrl+bl| 跳到最后一个(上一个访问的)窗口 | |Ctrl+b.| 移动窗口(改变窗口编号) | |Ctrl+b&| 关闭当前窗口 | |Ctrl+b0...9| 跳到编号为 # 的窗口 |
习惯建议:为不同任务建窗口并命名(,),例如code、server、logs;结合f查找可在窗口较多时快速定位。
会话(Session / Windows 组)
会话是最外层容器,多个窗口从属于同一会话:
| 快捷键 | 描述 | | :- | - | |Ctrl+bd| 从当前会话分离(detach,会话继续在后台运行) | |Ctrl+bs| 显示所有会话,可交互切换 | |Ctrl+b$| 重命名当前会话 | |Ctrl+b(/)| 切换到上一个 / 下一个会话 |
d分离是日常使用频率最高的动作——按完后终端回到普通 shell,但所有窗口与程序仍在后台运行,下次tmux attach(或Ctrl+b+s选择)即可原样恢复。
命令模式:比快捷键更精细的控制
快捷键本质是"命令的绑定",而命令模式允许直接输入完整命令,表达能力更强。
进入命令模式
| 快捷键/命令 | 描述 | | :- | - | |Ctrl+b:| 进入命令模式 |
按下Ctrl+b+:后,屏幕底部出现:提示符,输入命令回车执行;例如输入new -s myname相当于前面的:new -s myname。命令模式中的绝大多数命令也能在 shell 中通过tmux <命令>调用。
调整窗格大小
| 命令 | 描述 | | :- | - | |resize-pane -D 20| 向下扩大当前窗格 20 行 | |resize-pane -U 20| 向上扩大当前窗格 20 行 | |resize-pane -L 20| 向左扩大当前窗格 20 列 | |resize-pane -R 20| 向右扩大当前窗格 20 列 |
-D/-U/-L/-R分别对应下/上/左/右四个方向,后面的数字是调整的单元格数量。该命令也可配合目标窗格使用(如resize-pane -t 2 -D 10调整指定窗格)。
清单类命令
| 命令 | 描述 | | :- | - | |list-keys| 列出所有键绑定命令 | |list-panes| 列出当前(或指定)窗口的所有窗格 | |list-windows| 列出当前会话的所有窗口 |
list-keys输出即Ctrl+b+?展示的完整数据;list-panes与list-windows会附带编号、尺寸、活动状态等信息,便于脚本化处理。
缓冲区与复制
复制模式产生的文本存放在编号缓冲区(buffer)中,以下是缓冲区的管理命令:
| 命令 | 描述 | | :- | - | |list-buffers| 列出所有缓冲区 | |show-buffer| 显示缓冲区 #0 的内容 | |capture-pane| 捕获窗格的完整内容(屏幕输出)到缓冲区 | |choose-buffer| 交互式选择缓冲区并粘贴 | |save-buffer a.txt| 将缓冲区内容保存到文件 a.txt | |delete-buffer -b 1| 删除编号为 1 的缓冲区 |
实战场景:当终端输出超过屏幕、又需要把某段日志留存时,可capture-pane捕获当前窗格全部内容,再save-buffer a.txt落盘;多个候选内容用choose-buffer交互挑选后粘贴。delete-buffer -b 1用于清理指定编号的缓冲区(不带-b则删除最近一个)。
环境与选项(set / setw)
| 命令 | 描述 | | :- | - | |set -g OPTION| 为所有会话设置选项(全局会话选项) | |setw -g OPTION| 为所有窗口设置选项(全局窗口选项) | |setw -g mode-keys vi| 启用 vi 风格的复制模式按键 | |set -g prefix C-a| 将前缀键设置为Ctrl+a|
set(set-option)管理会话级/服务级选项,setw(set-window-option)管理窗口级选项,-g表示全局生效,后续新建的会话或窗口都会继承。两个高频组合:
setw -g mode-keys vi把复制模式切换到 vi 键位,配合 Vim 动作速查 可获得编辑器一致的操作体验;set -g prefix C-a将前缀从Ctrl+b换成Ctrl+a(对习惯 GNU Screen 的用户更友好),改后所有快捷键均以新前缀开头。
建议把这些选项写入~/.tmux.conf持久化,修改后用tmux source-file ~/.tmux.conf重新加载。
杂项:窗格与窗口重排
| 命令 | 描述 | | :- | - | |swap-pane -s 3 -t 1| 将窗格 3 与窗格 1 交换位置 | |swap-window -t -1| 将当前窗口与上一个窗口交换 | |setw synchronize-panes| 切换同步输入(所有窗格同时接收键盘输入) | |join-pane -t :#| 将当前窗格合并到目标会话的 # 号窗口 |
swap-pane -s 3 -t 1:-s指定源窗格、-t指定目标窗格,适用于把监控窗格挪到顺手位置;swap-window -t -1:负号表示相对位置,-1即相邻的上一个窗口;setw synchronize-panes:开启后在一个窗格键入的内容会广播到同窗口所有窗格,常用于对多台服务器批量执行相同命令(再次执行即关闭);join-pane -t :#:把当前窗格"搬"进指定窗口,格式为会话:窗口,例如join-pane -t :1表示并入当前会话的 1 号窗口,是跨窗口重组任务的有力工具。
实战组合:把速查表变成工作流
将以上零散命令组合起来,可以形成几种高频工作流:
- 多机运维:新会话(
tmux new -s ops)→ 拆分窗格(Ctrl+b%)→setw synchronize-panes开启同步 → 在所有窗格中批量执行同样的 SSH 巡检命令 → 完成后再次执行setw synchronize-panes关闭同步。 - 长任务托管:编译/拉取等耗时任务放在独立窗格,随时Ctrl+b+z放大盯进度;即使终端关闭,
tmux attach后任务仍在。 - 日志留存:程序输出被刷屏时,
capture-pane捕获 →save-buffer log.txt保存,避免肉眼滚动回看。 - 布局整理:用
swap-pane、swap-window、join-pane把散落的窗格/窗口重组为"编辑区 + 运行区 + 日志区"的固定布局。
相关参考
- Tmux 备忘清单:本文的原始速查文档,可在仓库首页 README.md 的"命令"分类中找到入口;
- Vim 备忘清单 - 动作:复制模式(vi 模式)下移动光标与选择文本的动作参考;
- Screen 备忘清单:同为终端复用器的 GNU Screen 速查,可作为对比与备选方案。
此外,本仓库的速查清单由 package.json 中定义的构建工具链(refs-cli)将docs/下的 Markdown 渲染为网页版,所有速查文档均遵循同一排版约定(详见 Quick Reference 排版说明),你可以在同一站点内按需检索其他命令与工具。
【免费下载链接】reference面向开发者的技术速查清单(Cheat Sheets)集合,整理常见技术、工具与开发流程,帮助快速查阅关键信息,提高开发效率。项目地址: https://gitcode.com/GitHub_Trending/referen/reference
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考