这是一个为 Vim 键位习惯优化的 Tmux 配置,使用 Tmux Plugin Manager 管理插件,提供模糊选择器、美观的 Gruvbox 状态栏和智能会话管理。

git clone https://github.com/archibate/tmux-conf ~/.config/tmux --depth=1 && ~/.config/tmux/scripts/tmux_install.sh
推荐搭配小彭老师的 NeoVim 配置 一起使用。
C-z 作为前缀键(可改),最小化与 Vim 和 Bash 的键位冲突C-h/C-j/C-k/C-l 导航窗格,M-h/M-j/M-k/M-l 调整大小# 1. 安装依赖
sudo apt install tmux fzf xsel tree python3 # Debian/Ubuntu
brew install tmux fzf tree python3 # macOS
# 2. 克隆此仓库
git clone https://github.com/archibate/tmux-conf ~/.config/tmux
# 3. 运行安装脚本(设置配置、别名、TPM 和插件)
bash ~/.config/tmux/scripts/tmux_install.sh
# 4. 启动 tmux
tmux start-server
# 5. 新建一个会话
tmux new -s example_session
就这样!安装脚本会自动设置:
~/.tmux.conf 配置文件的符号链接tu、tl、ta、tc、ts、tb)SSH 用户为什么热爱 Tmux?主要因为它能解决远程会话管理的核心痛点:
1. 会话持久化 - 连接断开不影响工作
SSH 连接不稳定是常态。网络波动、电脑休眠、服务器重启都可能导致连接中断。使用 Tmux 时,即使 SSH 连接断开,所有正在运行的程序(编译、训练、服务)都会继续执行。只需重新登录并运行 tmux attach 即可回到之前的工作状态,就像从未离开过一样。
2. 同时管理多个任务 - 一个窗口搞定所有 SSH 没有图形界面,通常需要打开多个 SSH 终端窗口来同时运行多个任务。使用 Tmux,你可以在一个终端窗口内创建多个窗格和窗口,实时监控编译输出、日志文件、服务状态等,无需在多个 SSH 窗口间来回切换。
3. 保存工作环境 - 随时恢复 Tmux 可以保存你的整个工作环境:多个窗格、每个窗格运行的不同程序、目录位置等。下次登录时一键恢复所有状态,省去每次重新配置的时间。
4. 高效复制 - 超越终端限制 普通终端难以复制多行文本(特别是跨行的日志输出)。Tmux 的复制模式可以让你像在 Vim 里一样自由移动光标,选中任意范围的文本,甚至使用正则搜索快速定位内容,然后一键复制到系统剪贴板,或粘贴命令到 Bash 中执行。
5. 内容同步 - 多端共享
同一个 Tmux 会话可以被多个终端窗口同时访问,远程协作时你和队友可以同步看到相同的界面输出。从电脑到手机,无缝切换共享相同进程无需重启,只需 attach 到同一个会话,重现之前运行中的所有工作。
即使您不是 SSH 用户,Tmux 也是必须的:
总之,终端模拟器(或 IDE 内置终端)自身的多窗口使用极其不便,Vim 的“窗口”也无法替代 Tmux。
最重要的是,如果你是 Vibe Coding(通过自然语言指挥 AI 工具写代码)的重度用户,肯定常常多开 Claude Code 这类基于命令行的 Agent 工具,同时并行多个对话流。那么 Tmux 的多开可以帮你成为一名高效的“包工头”。
会话(Session) => 窗口(Window) => 窗格(Pane)
这个三层结构让 Tmux 能够高效组织多个终端任务:
会话(Session) - 最高层级,表示一个独立的工作环境
work、personal、dev 等tmux ls 查看所有会话,tmux attach -t <name> 重新连接tmux kill-session 可以强制杀死会话窗口(Window) - 会话的下一级,类似浏览器的标签页
editor、server、logs 等前缀 + n/p 或 前缀 + 1-9)窗格(Pane) - 窗口内的分割区域,类似 Vim 的 split
h/j/k/l 在窗格间快速切换H/J/K/L)或重新排列exit 或 C-d)时窗格自动关闭层级关系可视化:
tmux server ├── Session: work │ ├── Window: editor (1) │ │ ├── Pane: vim (left) │ │ └── Pane: tests (right) │ ├── Window: server (2) │ │ └── Pane: npm run dev │ └── Window: logs (3) │ └── Pane: tail -f log.txt ├── Session: personal │ ├── Window: chat │ └── Window: music └── Session: dev └── Window: code
这种结构让你可以:
太喜欢 Tmux 的窗格系统了?还可以了解一下 i3 / awesome 这类平铺型桌面管理器(替代传统的 GNOME / KDE / Xfce4)。
Tmux 有三种主要工作模式,如果你熟悉 Vim,这些模式会非常直观:
| 模式 | Vim 类比 | 说明 |
|---|---|---|
| TMUX | 插入模式 | 终端正常工作模式,可以直接向终端输入命令 |
| WAIT | Ctrl-w 组合键 | 前缀键 C-z 按下后的等待状态,准备接收窗格操作快捷键(如 C-z d 表示分离会话) |
| COPY | 普通模式 | 复制模式,可以用 h/j/k/l 自由移动光标浏览历史输出,不受终端限制,也支持类似 Vim 的 w/e/^/$ 等键位 |
| VISUAL | 可视模式 | 复制模式的一个子模式,在复制模式下按 v 进入,可以自由移动光标选中文本后,按 y 复制 |
| EX | EX 模式 | 按下前缀键 C-z 后,再按 :,可进入任意命令的输入,例如 :detach 等价于运行了 tmux detach |
| SYNC | 多光标模式 | 可在多个终端同步输入相同命令,不常用 |
┌──────────────────────────────────────────────────────────────┐ │ │ │ TMUX 模式 (终端模式) ──→ 按键直接显示在终端中 │ │ ↓ 按 Ctrl-z (前缀键) │ │ WAIT 模式 (等待命令) ─┬→ 按 h/j/k/l/x/c/n/p 等执行窗格操作 │ │ ├→ 按 : 进入 EX 命令模式 │ │ ├→ 按 d 分离会话(离开 Tmux) │ │ ├→ 按 P 粘贴当前剪切板内容 │ │ ↓ 按 Esc │ │ COPY 模式 (复制模式) ──→ 按 h/j/k/l/w/e/^/$ 自由移动光标 │ │ ↓ 按 / 搜索(支持正则表达式) │ │ ↓ 按 v 进入 VISUAL 选择 │ │ ↓ 按 y 复制 → 按 p 粘贴 │ │ ↓ 按 i/a/q/Esc │ │ 回到 TMUX 模式 │ │ │ └──────────────────────────────────────────────────────────────┘
TMUX 模式(终端模式)
WAIT 模式(等待命令)
Ctrl-z(前缀键)进入WAITh 会切换到左侧窗格,而不是在终端输入字母 hCtrl-w 后等待下一个键的状态COPY 模式(复制模式)
前缀 + Esc 进入h/j/k/l 自由移动光标,浏览历史输出v 进入 VISUAL 选择模式,用 h/j/k/l 选择文本y 复制选中内容i、a、q 或 Esc 退出,回到 TMUX 模式本配置提供的 tmux-mode-indicator 会在右下角的实时显示当前模式:
| 显示 | 模式 | 颜色 |
|---|---|---|
TMUX | 终端模式 | 青色 |
WAIT | 等待命令 | 绿色 |
COPY | 复制模式 | 橙色 |
SYNC | 同步模式 | 红色 |
这些设计让 Vim 用户感到非常自然:就像在 Vim 中按 Esc 回到普通模式,按 i/a 回到插入模式输入一样,而状态栏会提示当前模式。
前缀键是 Ctrl-z(替代 tmux 内置默认的 Ctrl-b,更符合人体工学)。
你可以在 tmux.conf 中自定义前缀键:
unbind C-b set -g prefix C-z bind C-z send-prefix
| 快捷键 | 功能 |
|---|---|
前缀 + h | 移动到左侧窗格 |
前缀 + j | 移动到下方窗格 |
前缀 + k | 移动到上方窗格 |
前缀 + l | 移动到右侧窗格 |
前缀 + ; | 上一个窗格(快速切换) |
前缀 + x | 关闭当前窗格 |
前缀 + b | 将窗格分离到新窗口 |
前缀 + m | 将窗格移动到另一个窗口 |
| 快捷键 | 功能 |
|---|---|
前缀 + H | 将窗格向左移动 |
前缀 + J | 将窗格向下移动 |
前缀 + K | 将窗格向上移动 |
前缀 + L | 将窗格向右移动 |
前缀 + s | 水平分割(类似 vim 的 :split) |
前缀 + v | 垂直分割(类似 vim 的 :vsplit) |
前缀 + C-o | 旋转窗格 |
| 快捷键 | 功能 |
|---|---|
前缀 + c 或 t | 创建新窗口 |
前缀 + 1-9 | 选择窗口 1-9 |
前缀 + n | 下一个窗口 |
前缀 + p | 上一个窗口 |
前缀 + a | 上一个窗口(快速切换) |
前缀 + , | 重命名窗口 |
前缀 + X | 关闭窗口 |
前缀 + w | 窗口选择器 (fzf) |
| 快捷键 | 功能 |
|---|---|
前缀 + f | 会话选择器 (fzf) |
前缀 + F | 目录选择器(所有会话/窗口) |
前缀 + A | 上一个会话(快速切换) |
前缀 + . | 重命名会话 |
前缀 + d | 分离会话 |
| 快捷键 | 功能 |
|---|---|
前缀 + Esc | 进入复制模式 |
v | 开始视觉选择 |
V | 选择整行 |
Ctrl-v | 矩形选择切换 |
y | 复制选择 |
Y | 复制到系统剪贴板(通过 xclip) |
p | 从 tmux 缓冲区粘贴 |
i/a/q/Esc | 退出复制模式 |
| 快捷键 | 功能 |
|---|---|
前缀 + I | 安装插件 |
前缀 + U | 更新插件 |
前缀 + R | 重新加载 ~/.tmux.conf |
| 快捷键 | 功能 |
|---|---|
前缀 + ? | 列出所有快捷键 |
前缀 + Ctrl-w | 保存窗格到文件 (/tmp/tmux-capture-YYYYMMDD-HHMMSS.txt) |
前缀 + P | 粘贴缓冲区 |
| 快捷键 | 功能 |
|---|---|
前缀 + y | 复制命令行到剪贴板 |
前缀 + Y | 复制当前目录到剪贴板 |
y(复制模式中) | 复制选择到系统剪贴板 |
Y(复制模式中) | 复制并粘贴到命令行 |
鼠标:用鼠标选择文本可直接复制到剪贴板(类似 Wendous Terminal)。
| 快捷键 | 功能 |
|---|---|
前缀 + Tab | 切换侧边栏(树形视图) |
前缀 + Backspace | 切换侧边栏并聚焦 |
| 快捷键 | 功能 |
|---|---|
前缀 + / | 正则表达式搜索 |
前缀 + Ctrl-f | 搜索文件 |
前缀 + Ctrl-g | 搜索 git 哈希值(git log 后) |
前缀 + Ctrl-u | 搜索 URL |
前缀 + Ctrl-d | 搜索数字 |
前缀 + Alt-h | 搜索 SHA 哈希值 |
前缀 + Alt-i | 搜索 IP 地址 |
在 copycat 模式中:
n - 下一个匹配N - 上一个匹配Enter - 复制匹配(vi 模式)注意:以下快捷键需要先进入复制模式(
前缀 + Esc)
复制模式中:
| 快捷键 | 功能 |
|---|---|
o | 用系统默认程序打开当前光标位置的文件/链接 |
Ctrl-o | 用 $EDITOR 打开 |
Shift-s | 在网络浏览器中搜索 |
使用方法:
前缀 + Esc 进入复制模式o 直接打开v 选中文本,再按 o 打开选中的内容| 快捷键 | 功能 |
|---|---|
前缀 + Space | 显示操作菜单 |
Ctrl-Space | 显示操作菜单(根表) |
| 快捷键 | 功能 |
|---|---|
前缀 + Ctrl-s | 手动保存会话 |
前缀 + Ctrl-r | 恢复已保存的会话 |
注意:tmux-continuum 每 15 分钟自动保存,tmux 启动时自动恢复。
| 快捷键 | 功能 |
|---|---|
前缀 + : | 命令提示符 |
前缀 + [ | 进入滚动模式(Esc 的替代方式) |
前缀 + ] | 从缓冲区粘贴 |
前缀 + space | 下一个布局 |
前缀 + z | 放大/缩小窗格 |
前缀 + { | 与左侧窗格交换 |
前缀 + } | 与右侧窗格交换 |
前缀 + o | 向前旋转窗格 |
前缀 + ~ | 显示消息 |
在引入 ~/.config/tmux/scripts/tmux_aliases.sh 后:
| 命令 | 功能 |
|---|---|
tu | 显示 fzf 会话选择器 |
tu <name> | 附加到或创建会话 <name> |
tu . | 创建/使用以当前目录命名的会话 |
tl | 列出会话 (tmux ls) |
ta | 附加到会话 (tmux attach) |
tc | 显示目录选择器(所有会话/窗口) |
tv | 查看当前窗格历史输出(less 分页器) |
ts | 完整 Claude 分析,带关注表格 |
tb | 快速关注视图(🔴🟡🟢) |
状态栏显示(从左到右):
使用 Claude Code 时,当 Claude 正在思考时,窗口列表中会显示 ✻。这由 claude_status.sh 后台监控器处理。
显示实时系统指标,带 20 点 sparkline 历史记录:
| 指标 | 描述 |
|---|---|
| LOAD | 1/5/15 分钟负载平均值(按 CPU 核心数缩放) |
| CPU | 当前使用率百分比及平均值 |
| MEM | 内存使用率百分比及平均值 |
| GLM | Claude API 令牌使用率(固定 0-100 刻度) |
使用 Gruvbox 配色:🔴 高 > 🟡 中 > 🟢 低。
状态栏脚本使用缓存确保 1 秒刷新率不影响性能:
| 缓存文件 | 指标 | 更新间隔 | 数据点 |
|---|---|---|---|
/tmp/tmux_sparkline_cache | CPU/MEM/GLM | 5 秒 | 20 点 |
/tmp/tmux_load_sparkline_cache | LOAD | 5 秒 | 20 点 |
/tmp/.glm_usage_cache | GLM API 使用率 | 60 秒 | 1 点 |
缓存确保状态栏更新流畅,同时保持低资源占用。
| 命令 | 功能 |
|---|---|
ts | 完整分析,带关注表格和窗格内容 |
tb | 快速关注视图,带 emoji 优先级(🔴🟡🟢) |
两个命令都运行在只读模式,只调用 tmux 命令(不编辑文件)。
注意:TPM 和所有插件由安装脚本自动安装。使用以下命令手动管理插件。
# 安装插件(如果尚未安装)
~/.tmux/plugins/tpm/bin/install_plugins # 等同于:前缀 + I
# 更新插件
~/.tmux/plugins/tpm/bin/update_plugins # 等同于:前缀 + U
# 清理未使用的插件
~/.tmux/plugins/tpm/bin/clean_plugins
# 在 tmux 内
tmux source-file ~/.tmux.conf
# 或从 shell
tmux reload
编辑 tmux.conf 进行自定义:
# 将前缀键改为 Ctrl-z unbind C-b set -g prefix C-z # 添加更多插件 set -g @plugin 'githubusername/reponame' # 更改颜色 set -g status-bg '#1d2021' set -g status-fg '#ebdbb2'
使用 Gruvbox 配色:
| 用途 | 颜色 |
|---|---|
| 背景 | #1d2021 (bg0) |
| 背景(较浅) | #32302f (bg1) |
| 前景 | #ebdbb2 (fg) |
| 绿色 | #b8bb26 |
| 蓝色 | #83a598 |
| 黄色 | #d79921 |
| 橙色 | #fe8019 |
| 紫色 | #d3869b |
| 灰色 | #928374 |
# 重新运行安装脚本(处理 TPM + 插件)
bash ~/.config/tmux/scripts/tmux_install.sh
# 或手动安装 TPM
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
# 然后安装插件
~/.tmux/plugins/tpm/bin/install_plugins
安装剪贴板工具:
sudo apt install xsel # Linux
brew install reattach-to-user-namespace # macOS
确保脚本有执行权限:
chmod +x ~/.config/tmux/scripts/*.sh
chmod +x ~/.config/tmux/scripts/*.py
screen-256color 改为 xterm-kitty,优化 Kitty 终端支持tv 别名:添加快速查看当前窗格历史输出的命令(使用 less 分页器)