.tmux.conf 配置文件如下。
# ============================================================
# tmux 常用配置 - 适合日常开发
# ============================================================
# -------------------- 基础设置 --------------------
# 前缀键改为 Ctrl+a(比默认 Ctrl+b 更顺手)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# 启用鼠标支持(滚轮、点击窗格、拖拽调整大小)
set -g mouse on
# 增加滚动历史缓冲区
set -g history-limit 50000
# 减少按键延迟(vim 用户必配)
set -sg escape-time 0
# 让窗口编号从 1 开始
set -g base-index 1
setw -g pane-base-index 1
# 关闭中间窗口后自动重新编号
set -g renumber-windows on
# 支持 256 色和真彩色
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",xterm-256color:Tc"
# 系统剪贴板支持(需要 xclip 或 xsel)
# 选中后复制到系统剪贴板
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -selection clipboard"
# 鼠标选中后也复制到系统剪贴板
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard"
# -------------------- 分屏快捷键 --------------------
# 更直观的分屏快捷键(| 竖分,- 横分,符号和方向一致)
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 -n M-h select-pane -L
bind -n M-j select-pane -D
bind -n M-k select-pane -U
bind -n M-l select-pane -R
# Vim 风格调整窗格大小(带前缀键 + 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
# Enter 复制模式
bind Enter copy-mode
# v 开始选择(vim 习惯)
bind-key -T copy-mode-vi v send-keys -X begin-selection
# -------------------- 实用快捷键 --------------------
# 快速重载配置
bind r source-file ~/.tmux.conf \; display-message "tmux config reloaded!"
# 快速交换窗格位置
bind > swap-pane -D
bind < swap-pane -U
# 快速跳转到指定窗口(带前缀键 + 数字)
bind 1 select-window -t :1
bind 2 select-window -t :2
bind 3 select-window -t :3
bind 4 select-window -t :4
bind 5 select-window -t :5
bind 6 select-window -t :6
bind 7 select-window -t :7
bind 8 select-window -t :8
bind 9 select-window -t :9
# 同步输入到所有窗格(批量操作多台服务器时超有用)
bind S setw synchronize-panes
# -------------------- 状态栏美化 --------------------
# 状态栏颜色(Tokyo Night 风格)
set -g status-style "bg=#1a1b26,fg=#a9b1d6"
# 活动窗口高亮
setw -g window-status-current-style "bg=#7aa2f7,fg=#1a1b26,bold"
setw -g window-status-current-format " #I:#W "
# 非活动窗口
setw -g window-status-format " #I:#W "
# 窗格边框
set -g pane-border-style "fg=#3b4261"
set -g pane-active-border-style "fg=#7aa2f7"
# 状态栏左侧:会话名
set -g status-left-length 30
set -g status-left "#[fg=#1a1b26,bg=#7aa2f7,bold] #S #[default] "
# 状态栏右侧:时间日期
set -g status-right-length 50
set -g status-right "#[fg=#565f89] %Y-%m-%d #[fg=#1a1b26,bg=#7aa2f7,bold] %H:%M "
# 消息样式
set -g message-style "bg=#7aa2f7,fg=#1a1b26,bold"
# -------------------- 其他优化 --------------------
# 监听窗口活动(有输出时高亮提示)
setw -g monitor-activity on
set -g visual-activity off
tmux 配置说明文档
基于当前
~/.tmux.conf配置编写,适合零基础新手。
配置文件位置:~/.tmux.conf
tmux 版本:3.2a
一、tmux 是什么?
tmux(Terminal Multiplexer)是一个终端复用器,核心能力:
- 分屏:在一个终端窗口里同时显示多个终端
- 会话:关闭终端窗口后程序不会死,下次可以重新连上
- 远程友好:SSH 断了也能恢复工作现场
简单理解:tmux 让一个终端窗口变成多个终端,而且关不掉。
安装(如果还没装)
sudo apt install tmux
二、最重要的概念:前缀键
什么是前缀键?
tmux 有一个特殊按键叫前缀键(prefix key)。你的配置把前缀键设为 Ctrl+a。
绝大多数 tmux 快捷键都需要两步操作:
第一步:按下 Ctrl+a,然后松开
第二步:再按下一个功能键
⚠️ 新手最容易犯的错
很多人会同时按住 Ctrl+a 和后面的键,这是不对的。
正确操作示范(以竖分屏 | 为例):
1. 按住 Ctrl
2. 按一下 a
3. 松开 Ctrl 和 a ← 注意:这里要松开!
4. 按一下 Shift+\(即 | 键)
整个过程大概像这样:Ctrl+a ... 松手 ... |
速记格式说明
本文档用以下格式表示快捷键:
-
Ctrl+a |→ 先按Ctrl+a松开,再按| -
Alt+h→ 直接按,不需要前缀键(配置里用-n标记的都不需要)
三、三大核心概念
tmux 用三个层级组织你的工作区:
Session(会话)
└── Window(窗口)—— 底部状态栏显示的标签页
└── Pane(窗格)—— 屏幕上分割出来的小区域
打个比方:
- Session = 一个工作项目
- Window = 项目里的不同任务(浏览器标签页的感觉)
- Pane = 同一个任务里需要并排看的东西
四、会话(Session)管理
启动与退出
# 启动一个匿名会话
tmux
# 启动一个命名会话(推荐,方便后续查找)
tmux new -s myproject
# 启动一个指定名称的会话,并给它起个窗口名
tmux new -s myproject -n editor
# 从会话中脱离(会话在后台继续运行,程序不会中断)
# 快捷键:Ctrl+a d
# 或者命令:
tmux detach
查看与恢复
# 列出所有会话
tmux ls
# 输出示例:
# myproject: 1 windows (created Tue Apr 15 10:00:00 2026)
# work: 3 windows (created Tue Apr 15 09:30:00 2026)
# 重新连接到上次的会话
tmux attach
# 或简写
tmux a
# 连接到指定会话
tmux attach -t myproject
# 或简写
tmux a -t myproject
会话内切换
| 快捷键 | 说明 |
|---|---|
Ctrl+a s |
列出所有会话(可用方向键选择,Enter 切换) |
Ctrl+a $ |
重命名当前会话 |
Ctrl+a d |
脱离当前会话(回到普通终端) |
杀掉会话
# 杀掉指定会话
tmux kill-session -t myproject
# 杀掉所有会话
tmux kill-server
五、窗口(Window)管理
窗口就像浏览器的标签页,在底部状态栏显示。
| 快捷键 | 说明 |
|---|---|
Ctrl+a c |
新建窗口(自动保持当前路径) |
Ctrl+a 1 ~ Ctrl+a 9
|
跳转到第 1~9 个窗口 |
Ctrl+a n |
下一个窗口(next) |
Ctrl+a p |
上一个窗口(previous) |
Ctrl+a w |
列出所有窗口(可用方向键选择) |
Ctrl+a , |
重命名当前窗口 |
Ctrl+a & |
关闭当前窗口 |
状态栏怎么看?
[myproject] 0:vim- 1:bash* 2:git-
↑ ↑ ↑
非活动 当前窗口 非活动
- 带高亮背景的是当前窗口
- 带
*的是当前窗口 - 带
-的是非活动窗口 - 窗口编号从 1 开始(你的配置设定了
base-index 1)
六、窗格(Pane)管理 —— 分屏
这是 tmux 最常用的功能之一。
分屏
| 快捷键 | 说明 | |
|---|---|---|
Ctrl+a | |
左右竖分屏(` | ` 竖线,视觉上和方向一致) |
Ctrl+a - |
上下横分屏(- 横线,视觉上和方向一致) |
操作步骤(竖分屏):
1. Ctrl+a(松开)
2. Shift+\(即 | 键)
切换窗格
| 快捷键 | 说明 |
|---|---|
Alt+h |
切到左边窗格 |
Alt+j |
切到下边窗格 |
Alt+k |
切到上边窗格 |
Alt+l |
切到右边窗格 |
注意:这四个键不需要前缀键,直接
Alt+h就行。
记忆方式:和 vim 的 h/j/k/l 完全一致(左/下/上/右)。
调整窗格大小
| 快捷键 | 说明 |
|---|---|
Ctrl+a H |
窗格向左扩大 5 格 |
Ctrl+a J |
窗格向下扩大 5 格 |
Ctrl+a K |
窗格向上扩大 5 格 |
Ctrl+a L |
窗格向右扩大 5 格 |
Ctrl+a H可以连续按(按住 H 不松),因为配置里用了-r(repeatable)。
其他窗格操作
| 快捷键 | 说明 |
|---|---|
Ctrl+a > |
当前窗格和下一个窗格交换位置 |
Ctrl+a < |
当前窗格和上一个窗格交换位置 |
Ctrl+a x |
关闭当前窗格(会有确认提示) |
Ctrl+a z |
当前窗格全屏/恢复(再按一次恢复) |
七、复制模式(Copy Mode)
当你在 tmux 里想翻看之前的输出、复制一段文字时,需要进入「复制模式」。
进入与退出
| 操作 | 说明 |
|---|---|
Ctrl+a Enter |
进入复制模式 |
q |
退出复制模式 |
复制模式下的操作(vi 风格)
进入复制模式后,可以用 vi 风格的按键移动光标:
| 按键 | 说明 |
|---|---|
h/j/k/l |
左/下/上/右移动光标 |
w / b
|
下一个词 / 上一个词 |
gg |
跳到最顶部 |
G |
跳到最底部 |
Ctrl+u |
向上翻半页 |
Ctrl+d |
向下翻半页 |
选择与复制
| 按键 | 说明 |
|---|---|
v |
开始选择(移动光标来选中文字) |
y |
复制选中内容到系统剪贴板,并退出复制模式 |
q |
不复制,直接退出 |
完整复制流程示例
场景:你想复制终端里的一段输出
1. Ctrl+a Enter ← 进入复制模式
2. 用 j/k 或方向键移动光标到要复制的起始位置
3. 按 v ← 开始选择(文字会高亮)
4. 用 j/k 移动光标到结束位置
5. 按 y ← 复制到系统剪贴板,自动退出复制模式
6. 在其他程序里 Ctrl+V ← 粘贴
鼠标复制(更简单)
你的配置启用了鼠标支持,所以也可以:
1. 直接用鼠标拖选文字
2. 松开鼠标,内容自动复制到系统剪贴板
3. 在其他程序里 Ctrl+V 粘贴
八、同步输入
同步输入模式下,你在当前窗格敲的每一个键都会同时发送到所有窗格。
| 快捷键 | 说明 |
|---|---|
Ctrl+a S |
开启/关闭同步输入 |
使用场景:同时操作多台服务器时,在一个窗格输入命令,所有窗格同时执行。
注意:用完记得再按一次 Ctrl+a S 关掉,否则你切换到别的窗格时会一头雾水。
九、鼠标操作
你的配置启用了 mouse on,所以可以直接用鼠标:
| 操作 | 说明 |
|---|---|
| 点击窗格 | 切换到该窗格 |
| 拖拽窗格边框 | 调整窗格大小 |
| 鼠标滚轮 | 向上滚动查看历史输出 |
| 鼠标拖选文字 | 自动复制到系统剪贴板 |
| 点击状态栏窗口名 | 切换到该窗口 |
小技巧:如果想在 tmux 里用鼠标选中复制(而不是进入复制模式),
直接拖选即可,松开后自动复制。需要粘贴到 tmux 内部的话用Ctrl+a ]。
十、实用技巧
10.1 快速重载配置
修改 ~/.tmux.conf 后,不需要重启 tmux:
Ctrl+a r → 显示 "tmux config reloaded!" 即成功
10.2 命令模式
按 Ctrl+a : 进入命令模式,可以输入任何 tmux 命令:
:resize-pane -D 10 ← 当前窗格向下扩大 10 行
:swap-window -t 3 ← 把当前窗口移到第 3 个位置
:set mouse off ← 临时关闭鼠标
:kill-session -t old ← 杀掉指定会话
10.3 在窗格间发送按键
有时你想在当前窗格操作另一个窗格:
Ctrl+a : send-keys -t 1 "ls -la" Enter
这会向第 1 个窗格发送 ls -la 命令并执行。
10.4 窗格全屏切换
正在一个窗格里专注工作时,可以临时全屏:
Ctrl+a z ← 当前窗格全屏
Ctrl+a z ← 再按一次恢复
10.5 翻页查看历史
终端输出太多,想往上翻看:
方法一:鼠标滚轮直接滚(最直观)
方法二:Ctrl+a Enter 进入复制模式,然后用 Ctrl+u / Ctrl+d 翻页
你的历史缓冲区设置为 50000 行,足够回看很长的输出。
10.6 保存终端输出到文件
在命令模式下:
:capture-pane -S -100 ← 捕获当前窗格最近 100 行
:save-buffer ~/output.txt ← 保存到文件
十一、状态栏解读
你的配置使用了 Tokyo Night 配色,状态栏分三部分:
[左] [中] [右]
#S(会话名) 1:vim- 2:bash* 3:git- 2026-04-15 14:30
蓝底白字 非活动 当前 非活动 灰色 蓝底白字
-
左侧蓝色块:当前会话名称(
#S) - 中间:窗口列表,高亮的是当前窗口
- 右侧:日期和时间
窗格边框:
- 非活动窗格:暗蓝色边框
- 当前窗格:亮蓝色边框
十二、常见问题
Q:按了快捷键没反应?
检查以下几点:
- 是否先按了
Ctrl+a并松开了? -
|需要Shift+\,不是单独按\ - 确认你在 tmux 会话内(终端底部有状态栏)
Q:鼠标无法复制?
确认 xclip 已安装:
which xclip
# 如果没有输出,安装它:
# sudo apt install xclip
Q:颜色显示不对?
确认终端支持真彩色。在 .bashrc 或 .zshrc 中设置:
export TERM=xterm-256color
Q:SSH 断开后怎么恢复?
# 重新连接到服务器后
tmux a # 恢复最近一个会话
tmux a -t work # 恢复指定会话
Q:怎么退出 tmux?
# 方法一:脱离(会话后台继续运行)
Ctrl+a d
# 方法二:杀掉会话(彻底关闭)
tmux kill-session -t 会话名
# 方法三:杀掉所有
tmux kill-server
Q:快捷键和程序冲突了?
Alt+h/j/k/l 可能和其他程序冲突。如果某个程序需要这些按键,
可以临时关闭 tmux 鼠标:Ctrl+a :set mouse off,
用完再开:Ctrl+a :set mouse on。
Q:tmux 里 vim/nvim 颜色不对?
确认 ~/.tmux.conf 里有这两行(你的配置已包含):
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",xterm-256color:Tc"
十三、完整快捷键速查表
通用操作
| 快捷键 | 说明 | 需要前缀键? |
|---|---|---|
Ctrl+a |
前缀键 | - |
Ctrl+a ? |
显示所有快捷键 | Yes |
Ctrl+a : |
进入命令模式 | Yes |
Ctrl+a r |
重载配置文件 | Yes |
Ctrl+a d |
脱离当前会话 | Yes |
窗格(Pane)
| 快捷键 | 说明 | 需要前缀键? |
|---|---|---|
Ctrl+a | |
左右竖分屏 | Yes |
Ctrl+a - |
上下横分屏 | Yes |
Alt+h |
切到左窗格 | No |
Alt+j |
切到下窗格 | No |
Alt+k |
切到上窗格 | No |
Alt+l |
切到右窗格 | No |
Ctrl+a H |
窗格向左扩大 | Yes |
Ctrl+a J |
窗格向下扩大 | Yes |
Ctrl+a K |
窗格向上扩大 | Yes |
Ctrl+a L |
窗格向右扩大 | Yes |
Ctrl+a > |
和下一个窗格交换 | Yes |
Ctrl+a < |
和上一个窗格交换 | Yes |
Ctrl+a x |
关闭当前窗格 | Yes |
Ctrl+a z |
全屏/恢复切换 | Yes |
窗口(Window)
| 快捷键 | 说明 | 需要前缀键? |
|---|---|---|
Ctrl+a c |
新建窗口 | Yes |
Ctrl+a 1~9 |
跳到第 N 个窗口 | Yes |
Ctrl+a n |
下一个窗口 | Yes |
Ctrl+a p |
上一个窗口 | Yes |
Ctrl+a w |
列出所有窗口 | Yes |
Ctrl+a , |
重命名窗口 | Yes |
Ctrl+a & |
关闭窗口 | Yes |
复制模式
| 快捷键 | 说明 | 需要前缀键? |
|---|---|---|
Ctrl+a Enter |
进入复制模式 | Yes |
v |
开始选择 | 仅复制模式内 |
y |
复制到系统剪贴板 | 仅复制模式内 |
q |
退出复制模式 | 仅复制模式内 |
| 鼠标拖选 | 复制到系统剪贴板 | - |
会话(Session)
| 快捷键 | 说明 | 需要前缀键? |
|---|---|---|
Ctrl+a s |
列出所有会话 | Yes |
Ctrl+a $ |
重命名会话 | Yes |
Ctrl+a d |
脱离会话 | Yes |
Ctrl+a S |
开关同步输入 | Yes |
十四、推荐的工作流
新手入门流程
1. 打开终端,输入:tmux new -s work
2. 开始写代码,需要看日志?分屏:
Ctrl+a - (上下分屏,上面写代码,下面看日志)
3. 需要同时看另一个项目?新建窗口:
Ctrl+a c (新窗口,互不干扰)
4. 需要专注?全屏当前窗格:
Ctrl+a z (再按恢复)
5. 下班了?脱离会话:
Ctrl+a d (或者直接关掉终端窗口也行)
6. 明天继续:
tmux a -t work (工作现场完整恢复)
进阶:多项目管理
# 每个项目一个会话
tmux new -s frontend # 前端项目
tmux new -s backend # 后端项目
tmux new -s devops # 运维操作
# 在会话间切换
Ctrl+a s → 弹出会话列表,方向键选择,Enter 切换
# 或者从终端直接切
tmux switch -t frontend
以上配置和文档来自ai。