Tmux 终端复用器:推荐配置 + 完整使用手册
Tmux 终端复用器:推荐配置 + 完整使用手册
tmux 是一款强大的终端复用器(Terminal Multiplexer),让你在一个终端窗口中管理多个会话、窗口和面板。它最核心的能力是会话持久化——即使 SSH 断开,你的进程仍在后台运行,重新连接即可恢复工作。
为什么要用 tmux?
| 场景 | 没有 tmux | 有 tmux |
|---|---|---|
| SSH 断开 | 进程全部丢失 | 会话持久化,重连即恢复 |
| 多任务 | 开多个终端窗口 | 一个窗口内分屏 |
| 结对编程 | 需要共享屏幕软件 | 共享 tmux 会话 |
| 服务器运维 | nohup/screen | 更现代、更强大的管理 |
安装
# macOS
brew install tmux
# Ubuntu / Debian
sudo apt install tmux
# CentOS / RHEL
sudo yum install tmux
# Arch Linux
sudo pacman -S tmux
安装后运行 tmux -V 确认版本(推荐 3.0+)。
核心概念
tmux 的层级结构:
Server(服务器)
└── Session(会话)
└── Window(窗口)
└── Pane(面板)
- Session:一个独立的工作空间,可以在后台运行
- Window:类似浏览器的标签页
- Pane:窗口内的分屏区域
- Prefix Key:默认是
Ctrl+b,所有快捷键都需要先按 Prefix
推荐配置 .tmux.conf
将以下内容保存到 ~/.tmux.conf(或 ~/.config/tmux/tmux.conf):
# ============================================
# Tmux 推荐配置 (2025/2026)
# 兼容 tmux 3.0+
# ============================================
# ---------- 基础设置 ----------
# 修改 Prefix 键为 Ctrl+a(更容易按到)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# 窗口和面板编号从 1 开始(匹配键盘布局)
set -g base-index 1
setw -g pane-base-index 1
# 关闭窗口后自动重新编号
set -g renumber-windows on
# 减少 Escape 延迟(对 Vim 用户至关重要)
set -sg escape-time 10
# 增加历史滚动缓冲区
set -g history-limit 50000
# 启用鼠标支持(点击切换面板、拖拽调整大小、滚动)
set -g mouse on
# 启用真彩色支持
set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",xterm-256color:RGB"
# 状态栏刷新间隔(秒)
set -g status-interval 5
# 焦点事件(Vim autoread 等需要)
set -g focus-events on
# ---------- 快捷键绑定 ----------
# 快速重载配置
bind r source-file ~/.tmux.conf \; display-message "Config reloaded!"
# 更直观的分屏键(| 垂直分,- 水平分)
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
# 新建窗口时保持当前路径
bind c new-window -c "#{pane_current_path}"
# Vim 风格的面板切换
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# Alt+方向键 切换面板(无需 Prefix)
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# Ctrl+Shift+左/右 移动窗口
bind -n C-S-Left swap-window -t -1\; select-window -t -1
bind -n C-S-Right swap-window -t +1\; select-window -t +1
# 调整面板大小(Prefix + H/J/K/L)
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
# ---------- 复制模式(Vi 风格)----------
setw -g mode-keys vi
# v 开始选择,y 复制
bind -T copy-mode-vi v send-keys -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy"
# Linux 用户替换为:xclip -in -selection clipboard
# ---------- 状态栏美化 ----------
# 状态栏位置
set -g status-position bottom
# 状态栏颜色
set -g status-style "bg=#1e1e2e,fg=#cdd6f4"
# 左侧:会话名
set -g status-left "#[bg=#89b4fa,fg=#1e1e2e,bold] #S #[default] "
set -g status-left-length 30
# 右侧:时间
set -g status-right "#[fg=#a6adc8] %Y-%m-%d %H:%M "
set -g status-right-length 50
# 当前窗口样式
setw -g window-status-current-format "#[bg=#cba6f7,fg=#1e1e2e,bold] #I:#W "
# 非活动窗口样式
setw -g window-status-format " #[fg=#a6adc8]#I:#W "
# 面板边框颜色
set -g pane-border-style "fg=#45475a"
set -g pane-active-border-style "fg=#89b4fa"
# 消息样式
set -g message-style "bg=#89b4fa,fg=#1e1e2e"
# ---------- 插件管理(TPM)----------
# 安装 TPM:git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
# tmux-resurrect 设置
set -g @resurrect-capture-pane-contents 'on'
# tmux-continuum 设置(每 15 分钟自动保存)
set -g @continuum-restore 'on'
set -g @continuum-save-interval '15'
# 初始化 TPM(必须放在配置文件最末尾)
run '~/.tmux/plugins/tpm/tpm'
安装插件管理器 TPM
# 安装 TPM
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
# 重载配置
tmux source ~/.tmux.conf
# 在 tmux 中按 Prefix + I(大写 i)安装所有插件
快捷键速查表
以下快捷键基于推荐配置(Prefix 已改为
Ctrl+a)。 使用默认配置的用户请将Ctrl+a替换为Ctrl+b。
会话管理
| 操作 | 命令行 | 快捷键 |
|---|---|---|
| 新建会话 | tmux new -s name |
|
| 列出会话 | tmux ls |
Prefix + s |
| 连接会话 | tmux a -t name |
|
| 断开会话 | Prefix + d |
|
| 重命名会话 | Prefix + $ |
|
| 关闭会话 | tmux kill-ses -t name |
|
| 切换会话 | Prefix + ( / ) |
窗口管理
| 操作 | 快捷键 |
|---|---|
| 新建窗口 | Prefix + c |
| 关闭窗口 | Prefix + & |
| 重命名窗口 | Prefix + , |
| 下一个窗口 | Prefix + n |
| 上一个窗口 | Prefix + p |
| 按编号切换 | Prefix + 0-9 |
| 窗口列表 | Prefix + w |
| 查找窗口 | Prefix + f |
面板管理
| 操作 | 快捷键 |
|---|---|
| 垂直分屏 | Prefix + ` |
| 水平分屏 | Prefix + - |
| 切换面板(Vim 风格) | Prefix + h/j/k/l |
| 切换面板(方向键) | Alt + 方向键 |
| 调整面板大小 | Prefix + H/J/K/L |
| 面板最大化/还原 | Prefix + z |
| 关闭面板 | Prefix + x |
| 显示面板编号 | Prefix + q |
| 交换面板 | Prefix + { / } |
| 切换布局 | Prefix + Space |
复制模式
| 操作 | 快捷键 |
|---|---|
| 进入复制模式 | Prefix + [ |
| 开始选择 | v |
| 复制选中内容 | y |
| 退出复制模式 | q 或 Esc |
| 粘贴 | Prefix + ] |
其他
| 操作 | 快捷键/命令 |
|---|---|
| 重载配置 | Prefix + r |
| 显示快捷键列表 | Prefix + ? |
| 进入命令模式 | Prefix + : |
| 显示时钟 | Prefix + t |
实战场景
场景一:远程服务器开发
# SSH 到服务器后创建工作会话
tmux new -s dev
# 分屏:左边写代码,右边跑服务
# Prefix + | 垂直分屏
# 左边 vim,右边 npm run dev
# 需要下班?断开会话
# Prefix + d
# 第二天重新连接
ssh server
tmux a -t dev # 一切还在!
场景二:多项目工作区
# 为每个项目创建独立会话
tmux new -s frontend
tmux new -s backend
tmux new -s database
# 通过 Prefix + s 在会话间快速切换
# 通过 Prefix + ( / ) 按顺序切换
场景三:日志监控面板
tmux new -s monitor
# 创建四面板网格
# Prefix + | (垂直分)
# Prefix + - (水平分左)
# 切到右侧面板
# Prefix + - (水平分右)
# 每个面板 tail 不同日志
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log
tail -f /var/log/app/app.log
htop
推荐插件详解
| 插件 | 作用 | 说明 |
|---|---|---|
| tmux-sensible | 合理默认值 | 大家都认同的基础设置 |
| tmux-yank | 剪贴板集成 | 复制内容到系统剪贴板 |
| tmux-resurrect | 会话恢复 | 系统重启后恢复所有会话 |
| tmux-continuum | 自动保存 | 每 15 分钟自动保存会话 |
| vim-tmux-navigator | Vim 集成 | Vim 和 tmux 面板无缝切换 |
插件安装/管理
# Prefix + I 安装新插件
# Prefix + U 更新插件
# Prefix + Alt + u 卸载未列出的插件
常见问题
Q: 怎么滚动查看历史输出?
开启鼠标模式后直接用鼠标滚轮滚动,或按 Prefix + [ 进入复制模式后用方向键/Page Up 翻页。
Q: 配色不正确怎么办?
确保终端模拟器支持 256 色或真彩色,并在 .tmux.conf 中设置了 default-terminal 和 terminal-overrides。
Q: macOS 下复制到剪贴板无效?
安装 tmux-yank 插件,或确保复制命令管道到 pbcopy。如果使用 iTerm2,勾选 "Applications in terminal may access clipboard"。
Q: 如何和 Vim/Neovim 配合使用?
推荐安装 vim-tmux-navigator 插件,实现 Ctrl+h/j/k/l 在 Vim 和 tmux 面板间无缝切换(需要同时在 Vim 中安装对应插件)。
Q: 如何完全退出 tmux?
关闭所有面板和窗口后自动退出,或运行 tmux kill-server 关闭所有会话。