Tmux-一个相见恨晚的终端工具

作者:

凌晨两点,SSH连上服务器。Claude Code正在重构一个2000行的模块,进度条走到87%。

网络抖了一下。

终端关了。SSH断了。进程跟着一起消失。

两个小时,从零开始。

这种事经历过一次,就会去找解决方案。解决方案叫 tmux

一个19年前的工具,为什么2026年还在用

tmux 的全称是 Terminal Multiplexer,终端复用器。Nicholas Marriott 在2007年写了第一版,用 C 语言,ISC 开源协议。到2026年,GitHub 上 46,000 颗星,最新版本 3.6b,支持滚动条和 Mode 2031 主题。

19年,一个终端工具能活这么久,靠的不是花哨功能,是一个朴素的设计:客户端-服务器架构

普通终端里,你的 shell 进程直接挂在 SSH 连接上。SSH 断了,shell 死了,里面跑的所有东西一起完蛋。tmux 在中间加了一层——一个常驻后台的服务器进程,管理着所有会话。你的终端只是一个”客户端”,连上去看画面,断开了服务器照样跑。

这个架构意味着三件事:

会话不死。SSH 断线、笔记本合盖、WiFi 切换,tmux 里的进程都不受影响。跑3小时的模型训练,放心合上电脑走人,第二天打开还是那个进度条。

多人共享。两个客户端可以 attach 到同一个会话。你在这头改代码,同事在那头看输出。debug 的时候不用截屏、不用描述”你看那个第三行”,直接共享同一个画面。

完整 CLI API。每一个 tmux 操作都能通过命令行调用。tmux new-session -d -s dev 创建后台会话,tmux send-keys -t dev:0 'ls' Enter 往窗口里发命令。这意味着 tmux 可以被脚本化、自动化。

5分钟能学会

安装一行命令的事:

# macOS
brew install tmux

# Ubuntu/Debian
sudo apt install tmux

# CentOS/RHEL
sudo yum install tmux

装完输入 tmux,进新会话。底部绿色状态栏告诉你当前在哪个窗口。

tmux 的概念层级很简单:Session 包含 Window,Window 包含 Pane。Session 是一组工作区的集合,Window 类似浏览器的标签页,Pane 是窗口里的分屏。

日常就这几个操作。Ctrl+b 是前缀键,按完松开再按下一个:

Ctrl+b d — 脱离会话。后台继续跑,安全退出 SSH。

Ctrl+b c — 新建窗口。

Ctrl+b 0~9 — 切到第几个窗口。数字键直接按。

Ctrl+b % — 左右分屏。

Ctrl+b " — 上下分屏。

Ctrl+b o — 在分屏之间切换。

tmux attach — 重新连上之前的会话。

够了。日常开发就这些。

配置:改一次就行

~/.tmux.conf 里扔几行,体验好很多:

# 前缀键改成 Ctrl+a,按起来顺手
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# 鼠标支持(点击切换窗口、拖拽分屏边界)
set -g mouse on

# 256色 + 真彩色
set -g default-terminal "tmux-256color"
set -as terminal-overrides ",*:Tc"

# 窗口从1开始编号
set -g base-index 1

# 历史记录增加到5万行(默认2000太少)
set -g history-limit 50000

# Escape 延迟设为0(vim用户必备)
set -sg escape-time 0

# 状态栏美化
set -g status-bg colour235
set -g status-fg colour136

改完 tmux source ~/.tmux.conf 重新加载。

插件生态:14000颗星的管理器

tmux 的插件管理器叫 TPM(Tmux Plugin Manager),GitHub 上 14,000 颗星。安装后在配置文件里声明插件,prefix + I 一键安装。

几个必装的:

tmux-resurrect(12,000 星)— 保存和恢复整个 tmux 环境。窗口布局、运行中的命令、工作目录,全部持久化到文件。服务器重启后一条命令恢复所有会话。

tmux-continuum(3,800 星)— 配合 resurrect,每15分钟自动保存。配合起来的效果是:你的 tmux 环境永远不会丢失。

tmux-yank(3,000 星)— 把 tmux 的复制操作接入系统剪贴板。macOS 用 pbcopy,Linux 用 xclip,配一次就不用管了。

tmux-copycat(1,200 星)— 增强复制模式的搜索。在历史输出里用正则搜 URL、Git hash、IP 地址,比默认搜索好用很多。

安装 TPM 只需要在 .tmux.conf 末尾加三行:

set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
run '~/.tmux/plugins/tpm/tpm'

复制模式:很多人不知道的功能

tmux 里可以往上翻看之前的输出,这个功能叫复制模式(Copy Mode)。

Ctrl+b 然后 [ 进入。进去之后可以用方向键翻页,或者配置 vi 模式用 h/j/k/l 移动、/ 搜索、v 选择、y 复制。

# 在 .tmux.conf 里启用 vi 模式
setw -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -sel clip'
# macOS 用户把 xclip 换成 pbcopy

history-limit 控制每个窗格的回滚行数,默认2000行。跑 AI Agent 的时候输出量很大,建议设到 50000。

会话管理器:一条命令拉起整个开发环境

手动创建窗口、分屏、启动命令,做几次就烦了。会话管理器把这个过程变成配置文件。

tmuxinator(Ruby,16,000 星)是最成熟的选择。YAML 配置,支持 ERB 模板:

# ~/.config/tmuxinator/ai-dev.yml
name: ai-dev
root: ~/projects/myproject
windows:
  - coding:
      layout: main-vertical
      panes:
        - claude --model ultimate --yolo
        - git log --oneline -20
  - review:
      panes:
        - qodercli "review the last 3 commits"
  - monitor:
      panes:
        - htop
        - tail -f /var/log/app.log

tmuxinator start ai-dev 一条命令拉起三个窗口,每个窗口自动执行预设命令。关掉电脑,第二天同一条命令恢复一切。

smug(Go 语言)更轻量,单个二进制文件,不需要 Ruby 环境。配置格式类似,还兼做任务运行器。

搭配 AI 工具才是正菜

到这里还是常规操作。tmux 真正有意思的用法,是和 Claude Code、Qoder 这类 AI 编程工具搭配。

2026年的 AI 编程有一个明显趋势:Agent 的运行时间越来越长。一个 Claude Code 的 agentic loop 可以跑 20-30 分钟,中间不断迭代文件修改、跑测试、修 bug、提交代码。这种长时间任务直接扔 SSH 终端里跑,网络一抖全废。

tmux 解决了这个问题。而且解决得很彻底——2026年2月,Claude Code 官方新增了 --tmux 参数,启动时自动创建 tmux 会话。这意味着 tmux 已经不是”可选搭配”,而是 AI 编程工具生态的一部分。

场景一:fire-and-forget 模式

在远程服务器上启动 Claude Code,detach,关掉电脑。几个小时后 SSH 回来,结果已经在那了。

tmux new -s ai-work
claude "refactor the auth module to use JWT"
# Ctrl+b d 脱离
# 几个小时后...
tmux attach -t ai-work

“tmux keeps my session alive even when I drop signal. I start a task on my laptop, fly to another city, open my phone, SSH in, and the agent is still working.”

场景二:多 Agent 并行

这是2026年最火的 tmux 用法。一个会话里开多个窗口,每个跑一个独立的 AI Agent,各自处理不同任务。

GitHub 上有个项目叫 claude-squad(5,100 星),专门做这件事——用 tmux 管理多个 Claude Code 实例,每个实例在独立的 git worktree 里工作,互不干扰。

还有 amux(Agent Multiplexer),更轻量,专注于”人+多个 Agent 协作”的场景。

tmux new -s agents

# 窗口0: Agent 1 做功能开发
claude --worktree feat-1024-payments

# Ctrl+b c → 窗口1: Agent 2 修 bug
claude --worktree fix-987-auth-timeout

# Ctrl+b c → 窗口2: Agent 3 做重构
claude --worktree refactor-api-layer

# Ctrl+b c → 窗口3: 自己看日志和测试结果
watch -n 5 'go test ./... -count=1'

“On a typical day, a dozen agents are working in parallel, each on a separate git worktree, each with its own tmux session.”

一天同时跑十几个 Agent,每个在自己的 git worktree 和 tmux 会话里独立工作。

场景三:tmux 状态栏监控 Agent 状态

进阶玩法是把 AI Agent 的状态显示在 tmux 状态栏里。Claude Code 的 hooks 把状态写入文件,tmux 的 format string 读取并显示一个状态点——绿色在跑,黄色等输入,红色出错。一眼扫过去就知道哪个 Agent 需要关注。

几个坑

复制粘贴不通。tmux 有自己的剪贴板,和系统不互通。装 tmux-yank 插件一步解决。

颜色不对。配置加 set -g default-terminal "tmux-256color"set -as terminal-overrides ",*:Tc"

历史输出翻不到。Ctrl+b 然后 [ 进入复制模式,方向键翻页,q 退出。配合 history-limit 50000 使用。

会话太多分不清。tmux ls 看所有会话和活跃时间。养成取名的习惯,tmux new -s project-alpha,别用默认的0、1、2。

长时间会话变慢。每个窗格的回滚缓冲区占内存。10个窗格各5万行,内存消耗不小。不活跃的窗格用 tmux clear-history 清理。

竞品对比:为什么还是 tmux

2026年终端复用器有三个选择:tmux、GNU Screen、Zellij。

Screen 最老(1987年),几乎预装在每台 Unix 服务器上。但功能停滞多年——没有插件系统,状态栏简陋,不支持鼠标。适合应急,不适合日常。

Zellij(Rust 语言,33,000 星)是新生代。默认体验好,底部有帮助栏显示当前模式可用的快捷键。支持浮动窗格、WASM 插件系统。但生态小,服务器上需要手动安装,SSH 远程场景不如 tmux 方便。

tmux 的优势在于生态和普及度。46,000 星,100+ 插件,几乎所有 Linux 发行版的默认仓库里都有。AI 编程工具的集成也最先支持 tmux——Claude Code 的 --tmux 参数、claude-squad、amux,都是围绕 tmux 构建的。

一个工具活了19年还在被大量使用,靠的不是技术先进性,是生态壁垒和可靠性。

写在最后

SSH 会断,网络会抖,笔记本会没电。tmux 里的进程不会停。

2026年,AI 编程工具让终端重新变得重要。以前终端只是跑命令的地方,现在是 AI Agent 的工作间。Agent 在里面写代码、跑测试、提交 PR,一跑就是几十分钟。你需要一个稳定的环境来承载它们。

tmux 解决的就是这个问题。一个19年前的工具,在 AI 时代找到了新的位置。

往期推荐

MCP、A2A、ACP:Agent协议三国杀

如果你也在关注AI行业的格局变化,欢迎关注我,持续追踪AI领域的深度分析。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注