首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
Tmux命令总结:终端复用器核心用法与实战技巧
📅 2026/10/20 8:16:26
✍️ 爱科研究院
👁 阅读 3,247
这篇tmux命令总结其实是我使用了大半年之后浓缩出来的东西。tmux是一个终端复用器简单说它让你在一个终端窗口里同时跑多个任务、随时挂起和恢复、断线也不丢现场。如果你经常要登录远程服务器或者日常工作离不开命令行学它绝对值得。这篇文章会把tmux最常用、最核心的命令按场景拆开讲每个命令怎么用、为什么这样用、容易踩什么坑都会说到。1. 先搞清楚tmux的三大层级1.1 会话挂起你的整个工作现场tmux的核心价值是三个词会话、窗口、窗格。我第一次接触的时候盯着这个三层结构看了半天搞懂之后才发现90%的命令都是在围绕这三个概念转。先从会话说起。所谓会话你可以理解成一次完整的“工作现场”存档。你在终端里跑了一个开发服务、开了一堆日志窗口、调试到一半如果直接关掉SSH连接这些进程很快就没了。用tmux就不一样所有进程都挂在tmux的会话下面你随时可以断开连接下次再attach回去一切照旧。这个特性对远程服务器、对长时间跑任务的开发机、对那种“一断线就要从头再来”的烦人场景价值是巨大的。第一次使用时最简单的一条命令就是tmux new -s work这条命令会创建一个名为work的新会话回车之后你就进入了tmux环境。此时界面底部会出现一条绿色的状态栏上面显示当前会话名、窗口列表和系统时间之类的东西。看到这条状态栏说明你已经进来了。这里要特别提醒一点tmux这个名字听起来像个工具其实它背后做事的是一套“服务端 客户端”的架构。会话数据由服务端管理你敲tmux命令只是去连接这个服务端。这也是为什么你断线了会话还在的根本原因——进程根本没依赖你的SSH连接活着。1.2 窗口工作台里的标签页会话内部可以开多个窗口这跟浏览器里的标签页几乎一模一样。每个窗口都有自己独立的shell、独立的输出、独立的历史互不干扰。我习惯的做法是一个窗口跑编辑器一个窗口跑构建工具一个窗口跑测试用例这样整个开发流程在一块屏幕内就能闭环。默认情况下你进入新会话时已经有了第一个窗口编号是0。再按前缀键加c就能创建新窗口。前缀键默认是Ctrlb也就是先按住Ctrl再按b然后松开再按下一个键。刚上手的时候很多人会按成“同时按Ctrlb和c”这样不对得先按前缀、松开、再按c。这个习惯一旦养成后面所有快捷键都会顺畅很多。窗口相关快捷键我整理了一张速查表操作快捷键说明创建新窗口Ctrlb c在当前会话中开新窗口切换到下一窗口Ctrlb n跳到下一个窗口切换到上一窗口Ctrlb p跳到上一个窗口按编号跳转Ctrlb 数字直接跳到对应编号窗口重命名窗口Ctrlb ,方便从窗口列表里识别列出所有窗口Ctrlb w弹出列表用方向键选择关闭当前窗口Ctrlb 会询问是否确认关闭有些同学喜欢窗口编号从1开始而不是0。这个可以用配置改后面配置章节会说到。反正我个人的习惯是基础窗口只开三五个多了就用Ctrlb w切换比来回n/p快得多。1.3 窗格标签页里的分屏如果再往下拆一层同一个窗口内还能再分割成多个窗格。窗格就是你在一个终端窗口里看到左右上下排列的多块区域每一块都是一个独立shell。这个跟vim的split、VS Code的分屏是一个道理适合那种“左边编辑器、右边终端”或者“上面日志、下面监控”的布局。创建窗格用两条快捷键Ctrlb % # 左右分割也就是垂直分割 Ctrlb # 上下分割也就是水平分割分割完之后每个窗格底部会有独立的提示符它们共享的是同一个窗口的状态栏。窗格之间的切换用Ctrlb加方向键也可以按Ctrlb o在当前窗口内按顺序循环切换。窗格听起来复杂其实掌握个六七成就能提升不少效率。最大化的快捷键Ctrlb z我几乎每天都用写代码写到一半想放大当前窗格按一下z整个窗格占满终端再按一下z还原。这种感觉就像手机上看视频横屏竖屏切换用过就回不去。2. 会话管理命令从创建到恢复2.1 新建会话的几种姿势最标准的创建方式是tmux new -s 会话名如果你是第一次用也可以直接敲tmux new它会自动生成一个编号会话。想脱离具体环境只想要一块干净的临时终端直接tmux就行。但如果你有多个项目要并行我建议每条命令都带上-s参数给会话起个有意义的名字方便后续找回。有一种场景很常见想在后台开一个tmux会话不让它立刻占住你的屏幕。这时候用tmux new -d -s deploy-d表示detach创建会话后立刻回到原shell会话在后台跑。跑一个构建、重启一个服务、挂一个定时任务用这种方式再合适不过。你完全不需要一直盯着输出等干完活再tmux attach回来就行。还有一条我特别喜欢适合脚本和快捷方式里用tmux new -A -s work-A参数的意思是如果名为work的会话已经存在就直接attach到它如果不存在就创建一个新的再进去。这条命令完美解决了“每次设置快捷方式都要判断会话存不存在”的问题。配合alias基本可以做到一键回到固定工作现场。2.2 分离与重新接入分离是tmux里最常用的操作之一快捷键是Ctrlb d。分离之后你看起来像退出了tmux回到了原本的shell但会话里的所有进程全部还在后台运行。注意区分分离不是关闭更不是退出只是你把客户端和服务端断开了连接。如果你忘了当前开了多少个会话或者想在多个会话之间切换先用tmux ls这个命令会列出所有会话每行显示会话名、窗口数量、创建时间和当前状态。会话名后面如果带了“(attached)”字样说明这个会话正被某个客户端连接着。重新回到某个会话用tmux attach -t 会话名-t表示target也就是指定目标的缩写。这条命令在tmux世界里出现频率极高建议优先记住。还有一条简写tmux a -t 会话名和上面作用完全相同。提示分离Ctrlb d和关闭Ctrlb 是两回事。分离是“暂时离开”关闭是“彻底结束”。拿不准的时候优先用分离。2.3 会话的改名、切换与关闭会话可以随时改名不用关闭重建tmux rename-session -t 旧名字 新名字也可以在会话内直接按Ctrlb $重命名当前会话。改名的意义在于项目会变、任务会变你完全可以中途给会话换一个更贴切的名字。在tmux内部切换会话按Ctrlb s会在底部弹出会话列表方向键选择后回车即可跳转。快捷键Ctrlb )能直接跳到下一个会话Ctrlb (跳到上一个。这条键位不太常用但记下来总没坏处。关闭会话要注意暴力操作是tmux kill-session -t 会话名这会杀掉会话里的所有进程。如果当前会话内不想继续了直接输入exit退出所有窗口会话也会自动关闭。还有一个更狠的命令tmux kill-server会把所有会话全部结束。我在生产机器上踩过这个坑执行kill-server只需要两秒但重建工作现场可能要两个小时。所以这条命令慎用。3. 窗口操作日常最频繁的按键3.1 窗口的新建、切换与重命名新建窗口用Ctrlb c。执行后状态栏上会多出一个窗口编号屏幕也瞬间切换到了新窗口。很多人以为窗口只有编号其实每个窗口都可以有自己的名字方便快速识别。给窗口起名用Ctrlb ,回车后会弹出一个输入框让你填新名字。切换窗口最顺手的几个键Ctrlb n下一个窗口Ctrlb p上一个窗口Ctrlb 数字直接跳指定编号Ctrlb w弹出窗口列表用方向键选Ctrlb l跳到上一次所在的窗口最后一个键容易被忽略但特别适合那种“在编辑器窗口和命令行窗口之间来回跳”的场景。一按l就在最近两个窗口之间弹跳比一直按n和p去数要少按很多下。3.2 窗口的关闭与意外拯救关闭窗口用Ctrlb 按下之后tmux会提示你是否确认输入y回车就关了。注意这个y要用英文输入法打中文输入状态下有时候按键会被输入法拦截这也是个经典踩坑点。如果手滑关了不该关的窗口怎么救答案是救不回来窗口内的进程已经被终止了。所以tmux有一个好习惯值得养成重要进程要么挂在窗格里要么平时别轻易用关闭窗口多用一个“离开”的动作比如Ctrlb d而不是“关闭”。窗口和窗格之间可以互相转化。某个窗格想独占一个窗口按下Ctrlb !立刻变成一个新窗口。反过来也可以把窗口合并回某个窗格里需要用到join-pane命令。这种转换操作不常用但偶尔处理“聊天窗口太多想合并”的场景非常管用。3.3 窗口编号的重新整理tmux默认窗口编号是0、1、2这样持续递增的。关掉一个中间窗口后编号不会自动补齐比如关掉了1剩下的就是0和2看着不舒服。解决办法是设置窗口重编号set -g renumber-windows on把这条写进配置后每当你关掉一个窗口后面剩下窗口的编号会自动重新连续排列。我个人强烈推荐因为状态栏上的编号再也不会出现奇怪的跳号了。想让编号从1开始而不是0配置项是set -g base-index 1 setw -g pane-base-index 1第一行让窗口从1开始编号第二行让窗格也从1开始编号。很多从screen或window resizer过来的老用户会不适应0开头改成1开头之后状态栏看起来顺眼很多。这个设完之后数字跳转也要跟着改别到时候按Ctrlb 0找窗口却切不回去。4. 窗格布局分屏生产力4.1 分割与窗格间切换窗格分割的两种方式是左右分割和上下分割Ctrlb % # 左右分割当前窗格右侧多出一块 Ctrlb # 上下分割当前窗格下方多出一块这里的%和是tmux作者选的键位%像一分为二的两半像从上往下的两条竖线其实不用强行记含义多用几次就顺手了。切到下一个窗格用Ctrlb o切到指定窗格用Ctrlb q。按q的时候tmux会在每个窗格中心显示一个数字编号你需要切到几号就按对应的数字非常直观。窗格大了或者多了之后这个方法比反复按方向键更快。四个方向的切换直接用Ctrlb加方向键。在多个窗格排列成网格布局的情况下方向键是最符合直觉的操作方式长期用下来肌肉记忆会很牢固。4.2 窗格的缩放、提升与同步输入窗格太小会看得很累尤其是分割成三个以上时。Ctrlb z可以把当前窗格瞬间放大到整个终端窗口再按一次z恢复原状。这个操作不用离开当前窗格非常适合“临时想仔细看一眼代码”的场合。想把某个窗格单独拉出来变成一个完整窗口按Ctrlb !。这个操作对重新排列布局特别有用先放大再把不要的窗格变成独立窗口然后把剩下的窗格合并回来桌面瞬间就清爽了。还有一个多窗格同步输入的技巧适合同时操作多台服务器或者批量调整多个环境。先进入tmux命令模式Ctrlb :然后输入setw synchronize-panes on开启之后你在一个窗格里敲的字会同步出现在同一个窗口的所有窗格里。这个功能在批量执行相同命令时简直是好用到不行。用完记得关掉不然继续开发时每个窗格都会跟着你输入相当吓人。4.3 窗格大小调整窗格大小不是固定的可以用快捷键调整。默认的调法是Ctrlb按住方向键不放窗格就会朝那个方向逐渐变大。这个节奏要一点时间适应想要“一步到位”的同学可以在命令模式下直接用resize-pane -D 20-D表示向下扩大20行-U/-L/-R分别对应上、左、右。-R是向右扩大列数。调整之后如果想回到均衡布局按Ctrlb space这个快捷键可以在几种预置布局之间循环切换比如均匀横排、均匀竖排、主区域加大等。布局在窗口里调整到位后它的状态会跟着窗口走下次回到这个窗口还是同样的分法。5. 复制模式与滚动回看5.1 用复制模式选中历史输出终端天天在滚动不注意保存输出等关键报错一闪而过的时候就傻眼了。tmux里查看历史输出有一套自己的机制叫复制模式。进入复制模式按Ctrlb [此时光标变成可移动状态屏幕冻结在你当前的输出界面上。用方向键可以往上翻看之前的输出选中文本时按空格键开始选择移动光标到结束位置按回车选中的内容就进了tmux粘贴缓冲。回到普通shell后按Ctrlb ]就能把刚才复制的内容粘贴出来。这套操作对不熟悉的人来说略别扭但它是tmux里最核心的“无鼠标操作”方式。如果你习惯vim的快捷键可以在配置里加上setw -g mode-keys vi设置完之后复制模式下就能用h/j/k/l移动光标用/搜索关键词用v开始选择用y复制。这套键位对vim用户来说是零成本上手。5.2 开启鼠标后一切变简单如果你实在不习惯键盘回看tmux也支持鼠标。配置文件加一行set -g mouse on重载配置后你用鼠标滚轮就能直接向上翻历史选中文本也就变成非常自然的操作。鼠标模式下用鼠标选中一段文字它会被自动复制到tmux缓冲然后你可以用Ctrlb ]粘贴或者直接在终端里用中键粘贴。但开了鼠标模式之后有个副作用原来右键粘贴、滚轮传输入到远程程序的行为会被tmux拦截。比如你在tmux里用less翻页滚轮不再滚动less的页面而是滚动tmux的历史。这个行为刚上手会有点困扰习惯后倒还能接受只是需要知道它背后的逻辑。5.3 回看历史的最大缓存tmux的复制内容默认只存在服务端的缓冲区里关闭会话后就没了。想让复制内容跟着你走、跨会话保存可以挂一个小的配置项set -g history-limit 50000这个是滚动历史的上限默认值偏小改大点对回看日志很有帮助。至于跨会话保存剪贴板需要操作系统剪切板桥接不同系统配置不同这里先不展开。日常偶尔的复制粘贴上面这套键位式操作已经完全够用了。6. 配置文件把tmux调整成顺手的样子6.1 前缀键与基础全局配置tmux的配置都写在用户目录下的~/.tmux.conf里。改完配置后在tmux内部按Ctrlb :输入source-file ~/.tmux.conf配置立即生效不用重启会话。这个热加载思想非常好我一直拿它当标准用法。很多人在默认前缀键这个坎上纠结。Ctrlb本身没什么问题但它离左手主键位稍远按起来不太自然。不少老玩家会把前缀键改成Ctrla这样可以解放左手set -g prefix C-a unbind C-b bind C-a send-prefix第二行是解除Ctrlb的原有绑定第三行的意思是将来当你想向shell发送一个真正的Ctrla字符时按两次Ctrla。改完前缀后所有快捷键都建立在Ctrla之上比如新窗口变成Ctrla c分离变成Ctrla d。每个人的手型和习惯不一样选哪个前缀键没有绝对标准。我个人的建议是别把前缀键换成别处别扭的键关键是自己按着顺。选定了就别频繁换肌肉记忆重新训练的成本比选键本身高得多。6.2 状态栏与外观美化状态栏是tmux界面上最显眼的东西它默认在底部显示前缀键提示、当前窗口列表、会话名、时间。这些显示项都可以定制。比如想让窗口名居中显示加入set-option -g status-justify centre想让当前窗口的背景色高亮setw -g window-status-current-style bgmagenta,fgblack当前窗口样式里的bg是背景色fg是前景色。颜色可以用magenta、green、cyan这些关键词也可以用#000000这样的十六进制色值。终端支持256色或者真彩色的情况下配色潜力很大。状态栏右侧默认显示时间可以用status-right定制。你对这个需求不大就保持默认如果想看时间和负载可以这样写set -g status-right #[fgcyan]%H:%M #[fggreen]#(uptime | awk -Fload average: {print $2})这条配置把时间和系统负载都塞进了状态栏。写法上#()可以执行外部命令返回值显示在状态栏这也解释了为什么很多人的状态栏里能显示天气、IP、git分支本质上都是这一招。6.3 窗口重编号与256色终端前面说过设置窗口从1开始编号也是一条配置set -g base-index 1 setw -g pane-base-index 1颜色问题是常见痛点。tmux在大部分终端里默认的TERM环境是screen或screen-256color。如果你发现vim里的配色偏淡、ls的彩色输出不对很可能就是终端类型不对。建议在配置文件里加set -g default-terminal screen-256color如果你的终端支持真彩并且tmux版本较新可以进一步用tmux-256color。但要注意这个值是要和SSH远程服务器上的terminfo相匹配的服务器上如果没有对应的terminfo反而会出乱码或者显示异常。遇到这种情况先退回screen-256color比较稳妥。6.4 键盘绑定与插件扩展tmux允许自定义任意按键。比如我想让prefix加F5变成一个“重新加载配置并显示提示”的快捷键bind F5 source-file ~/.tmux.conf \; display-message config reloaded绑定的思路是bind 按键 命令1 ; 命令2多个命令用反斜杠加空格分开。如果你想绑定一个不带前缀的直接快捷键比如按F12快速隐藏状态栏bind -n F12 set-option -g status off-n表示不需要前缀直接按下就触发。插件管理我推荐tpmTmux Plugin Manager。装好tpm后在配置文件里加set -g plugin tmux-plugins/tmux-resurrect然后用prefix加I安装。tmux-resurrect这个插件可以在tmux重启后恢复之前的所有会话、窗口、窗格布局甚至shell里的当前目录对生产力是实打实的提升。配置插件的思路和vim的插件管理器完全一样先声明再安装再用prefix加U更新。7. 常见问题与排查实录7.1 按下前缀键没有反应这一类问题排在第一位因为太常见了。很多时候不是tmux没反应而是按键根本没传到tmux。比如你刚好在某个程序里也绑定了Ctrlb程序优先消费了这个键又比如终端的输入法在中文状态下把某些组合键截走了还有可能你在SSH客户端里把某些快捷键设成了终端模拟器的快捷键根本没发给远程。排查思路分成三步。第一步确认你现在确实在一个tmux会话里状态栏是明显标志。第二步把输入法切换到英文再试一次Ctrlb c。第三步如果还是不行敲tmux前缀键后的冒号看看命令提示符是否出现。如果连冒号都出不来多半是键位冲突换个前缀键是最省心的解法。7.2 粘贴代码缩进全乱在tmux里开vim用鼠标选中一段多行代码然后粘贴经常会出现缩进错乱、每一行都被自动加了一个tab的怪现象。这个问题的根源是终端模拟器和tmux对“粘贴内容”和“键盘输入”没有做区分vim把粘贴进来的内容当成了逐行手动输入每行都触发了自动缩进。解决思路有两个。一是把tmux的鼠标模式关掉用系统终端的原生选择框去复制这样粘贴在vim外就完成了。二是在vim内部使用它的内置粘贴寄存器比如先按Ctrlb [进入复制模式选中内容然后用y或者y复制到vim寄存器粘贴时用p或者p绕开终端自动缩进的路径。抛开鼠标不谈tmux复制模式本身就是为了这个场景设计的熟练之后比鼠标方案更稳。7.3 kill-server之后会话全没了tmux kill-server会把服务端所有会话直接端掉。很多新人在折腾配置的时候听别人说“重启tmux”执行了kill-server结果辛苦搭建的窗口布局在几分钟内全部归零。如果你已经装了tmux-resurrect插件还可以抢救一下插件会在tmux关闭时自动保存布局重开后按prefix加r恢复。但没装插件的情况下只能认栽重新搭建。我的建议是生产机上永远不要用kill-server只对单个会话执行kill-session。在kill-server前面加个双保险先tmux ls看看当前有哪些会话再决定要杀哪个。7.4 窗口编号跳号、状态栏不对窗口编号从0开始且不会自动补位是tmux默认行为。如果你看到状态栏编号变得零零散散不是bug是设计如此。解决办法在配置章节已经写了set -g renumber-windows on配合base-index 1一起用。状态栏显示不正常还有一种常见情况你改了~/.tmux.conf但忘了重载。改配之后别急着发愁按Ctrlb :输入source-file ~/.tmux.conf或者用之前绑定的F5重载快捷键。如果修改的是颜色主题还要确认终端本身支持对应的颜色深度。状态栏颜色显示成奇怪的方块基本就是颜色格式和终端能力不匹配。7.5 一些容易忽略的小坑窗格一多屏幕就变小Ctrlb z是临时救星。同步输入模式开着忘了关打字会同步到所有窗格遇到这种情况先检查有没有setw synchronize-panes on。关掉最后一个窗口会话也就结束了。tmux ls输出显示(attached)表示有人正在使用这个会话不要轻易kill。在SSH连接不稳定时tmux本身就是最优解先attach再干活任何断流都不怕。我整理tmux命令的过程里最深的体会是工具再多不如常用。这里列的命令粗算下来也没多少但每一条都对应一个真实的终端场景。刚开始不需要把这些全部背下来先记会话管理、窗口、窗格三组核心快捷键剩下的在用到的时候回头看这篇就够了。快捷键这东西用一次比你看十遍都管用。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/20 8:16:26
快速选择算法:O(n)时间破解TopK问题的分治减治利器
2026/10/20 8:16:26
UDS Bootloader上位机开发:协议定制与状态机设计实战
2026/10/20 8:16:26
C# + HALCON视觉检测系统源码全解析:架构、模块与二次开发
2026/10/20 8:56:52
MQTT+ChatGPT构建自然语言物联网交互系统
2026/10/20 8:56:52
食堂点餐微信小程序源码详解:架构拆解、跑通步骤与踩坑指南
2026/10/20 8:56:52
拆解开源Agent框架:插件化设计能做到多极致?
2026/10/20 8:56:52
MISRA C 2023编码规范升级:嵌入式合规审核与静态分析落地要点
2026/10/20 8:56:52
程序员排障备忘录搭建指南:用Markdown与Git沉淀可复用的排坑知识库
2026/10/20 8:51:47
基于SpringBoot与Vue的美食推荐系统开发实战:AI算法与协同过滤实现
2026/10/20 1:05:26
WSL下STM32开发板烧录指南:USB透传与OpenOCD实操
2026/10/20 1:05:26
ROS2工业级开发:实时性、资源适配与可交付验证体系
2026/10/20 1:05:26
STM32+华为云IoT+Qt构建智能家居远程控制系统全解析
2026/10/19 14:00:16
OpenResearch实战:Claude Code、Codex、OpenCode、Cursor 工作流搭建与故障排查
2026/10/20 7:57:25
知识管理核弹:用Obsidian构建第二大脑的工程化方案(TaoToken 统一 Key 接入版)
2026/10/19 15:41:50
金融AI落地指南:从调研报告到技术选型与工程实践
2026/10/20 2:24:03
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/20 2:23:57
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/20 2:23:53
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)