[!info] related notes
tmux 命令速查
核心概念
Session(会话) ─── 后台工作空间,断线不丢失
└── Window(窗口) ─── 会话内的标签页
└── Pane(窗格) ─── 单个窗口内的分屏
前缀键:所有快捷键需先按前缀键(默认 Ctrl+b,下文配置改为 Ctrl+a),再按功能键。下表中 Prefix 代表此前缀键。
会话管理
CLI 命令
| 命令 | 说明 | 常用示例 |
|---|
tmux | 启动一个新的匿名会话 | tmux |
tmux new -s <name> | 启动一个命名会话 | tmux new -s dev |
tmux ls | 列出所有正在运行的会话 | tmux ls |
tmux attach / tmux a | 接回最近的会话 | tmux a -t dev(接回指定会话) |
tmux attach -t <name> | 接回指定名称的会话 | tmux attach -t dev |
tmux kill-session -t <name> | 关闭指定会话及其所有窗口和窗格 | tmux kill-session -t dev |
tmux kill-server | 关闭所有会话并停止 tmux 服务 | 慎用,会销毁所有会话 |
tmux rename-session -t <old> <new> | 重命名会话 | tmux rename-session -t 0 dev |
tmux switch -t <name> | 在 tmux 内切换到另一个会话 | tmux switch -t prod |
快捷键
| 快捷键 | 说明 |
|---|
Prefix + d | Detach:离开当前会话(后台继续运行) |
Prefix + s | 打开会话列表,可上下选择并切换 |
Prefix + $ | 重命名当前会话 |
Prefix + ( | 切换到上一个会话 |
Prefix + ) | 切换到下一个会话 |
窗口管理(标签页)
| 快捷键 | 说明 |
|---|
Prefix + c | 新建窗口 |
Prefix + , | 重命名当前窗口 |
Prefix + n | 切换到下一个窗口 |
Prefix + p | 切换到上一个窗口 |
Prefix + 0-9 | 跳转到指定编号的窗口 |
Prefix + w | 打开窗口列表(可预览所有窗口并选择) |
Prefix + & | 关闭当前窗口(会提示确认) |
Prefix + l | 在最近两个窗口之间来回切换(类似 Alt+Tab) |
Prefix + f | 按名称查找窗口 |
Prefix + . | 修改当前窗口的排序位置(输入数字) |
窗格管理(分屏)
分屏操作
| 快捷键 | 说明 |
|---|
Prefix + | | 左右分屏(垂直分割,自定义配置) |
Prefix + - | 上下分屏(水平分割,自定义配置) |
Prefix + % | 左右分屏(默认快捷键) |
Prefix + " | 上下分屏(默认快捷键) |
Prefix + x | 关闭当前窗格(会提示确认) |
Prefix + z | 最大化/还原当前窗格(zoom toggle) |
Prefix + ! | 将当前窗格拆分为独立窗口 |
Prefix + { | 将当前窗格向前移动 |
Prefix + } | 将当前窗格向后移动 |
焦点切换
| 快捷键 | 说明 |
|---|
Prefix + 方向键 | 按方向切换焦点到相邻窗格 |
Prefix + o | 循环切换到下一个窗格 |
Prefix + q | 短暂显示窗格编号,按数字可跳转 |
Prefix + q 0-9 | 按编号跳转到指定窗格 |
窗格大小调整
| 快捷键 | 说明 |
|---|
Prefix + Ctrl + 方向键 | 以 1 格为单位微调窗格边界 |
Prefix + Alt + 方向键 | 以 5 格为单位大幅调整窗格边界 |
Prefix + Alt + 1 | 切换到 even-horizontal 布局(均分左右) |
Prefix + Alt + 2 | 切换到 even-vertical 布局(均分上下) |
Prefix + Alt + 3 | 切换到 main-horizontal 布局(上方大窗,下方均分) |
Prefix + Alt + 4 | 切换到 main-vertical 布局(左侧大窗,右侧均分) |
Prefix + Alt + 5 | 切换到 tiled 布局(均分所有窗格) |
Prefix + 空格 | 在内置布局之间循环切换 |
复制模式
进入与退出
| 快捷键 | 说明 |
|---|
Prefix + [ | 进入复制模式(可用方向键/PgUp/PgDn 浏览历史输出) |
q 或 Esc | 在复制模式中退出 |
Prefix + ] | 粘贴缓冲区内容 |
复制模式下的移动键(vi 风格)
| 按键 | 说明 |
|---|
h / j / k / l | 左 / 下 / 上 / 右移动光标 |
w | 跳到下一个词首 |
b | 跳到上一个词首 |
e | 跳到当前词尾 |
0 | 跳到行首 |
$ | 跳到行尾 |
g | 跳到缓冲区顶部 |
G | 跳到缓冲区底部 |
Ctrl + u | 向上翻半页 |
Ctrl + d | 向下翻半页 |
Ctrl + b | 向上翻整页 |
Ctrl + f | 向下翻整页 |
? | 向上搜索(输入关键词后按 Enter) |
/ | 向下搜索 |
n | 跳到下一个搜索结果 |
N | 跳到上一个搜索结果 |
复制模式下的选择与复制
| 按键 | 说明 |
|---|
空格 | 开始选择(set mark) |
Enter | 复制选中内容到缓冲区并退出复制模式 |
y | 复制选中内容并退出(同 Enter) |
命令模式
| 快捷键 | 说明 |
|---|
Prefix + : | 进入命令模式(底部出现 : 提示符) |
:setw mouse on | 临时开启鼠标支持 |
:source-file ~/.tmux.conf | 重新加载配置文件 |
:list-keys | 列出所有已绑定的快捷键 |
:list-sessions | 列出所有会话 |
:kill-session | 关闭当前会话 |
:resize-pane -D 5 | 当前窗格向下扩展 5 行 |
:resize-pane -U 5 | 当前窗格向上扩展 5 行 |
:resize-pane -L 5 | 当前窗格向左扩展 5 列 |
:resize-pane -R 5 | 当前窗格向右扩展 5 列 |
:swap-pane -U | 当前窗格与上方窗格交换 |
:swap-pane -D | 当前窗格与下方窗格交换 |
:break-pane | 将当前窗格拆出为独立窗口 |
:join-pane -s 2 -t 1 | 将窗口 2 的窗格合并到窗口 1 |
:capture-pane | 捕获当前窗格内容到缓冲区 |
:save-buffer ~/output.txt | 将缓冲区内容保存到文件 |
:show-messages | 查看消息历史(调试用) |
推荐基础配置
cat << 'EOF' > ~/.tmux.conf
# ===== 基础设置 =====
# 开启鼠标支持(可点击窗格、拖拽调整大小、滚轮翻页)
set -g mouse on
# 开启 256 色和 True Color 支持(Neovim / 主题配色必需)
set -g default-terminal "tmux-256color"
set -ga terminal-overrides ",*256col*:Tc"
# ===== 前缀键 =====
# 将前缀键从默认的 Ctrl+b 改为 Ctrl+a(更易按)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# ===== 分屏快捷键 =====
# 使用 | 和 - 来垂直和水平分割(比默认的 % 和 " 更直觉)
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}"
# ===== 配置重载 =====
bind r source-file ~/.tmux.conf \; display "tmux 配置已刷新!"
# ===== 窗格切换(Alt + 方向键,无需前缀键) =====
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
# ===== 状态栏 =====
set -g status-style 'bg=#333333 fg=#5eacd3'
set -g status-right '%Y-%m-%d %H:%M'
# ===== 历史记录行数 =====
set -g history-limit 50000
EOF
写入后,在 tmux 里按 Prefix + r(即 Ctrl+a 再按 r)重新加载配置。
lazygit 浮窗
在 ~/.tmux.conf 中添加:
# Prefix + g 打开 lazygit 浮窗
bind-key g display-popup -E -w 90% -h 90% 'lazygit'
按 Prefix + g 弹出 lazygit,操作完 q 退出,回到原来的代码窗口。比开一个长期 window 更轻量。详见 lazygit。
配置项速查
| 配置项 | 说明 | 推荐值 |
|---|
set -g mouse on | 鼠标支持(点击、拖拽、滚轮) | on |
set -g default-terminal | 终端类型 | tmux-256color |
set -g history-limit | 每个窗格保留的历史行数 | 50000 |
set -g base-index | 窗口编号起始值 | 1(从 1 开始而非 0) |
set -g pane-base-index | 窗格编号起始值 | 1 |
set -g status-interval | 状态栏刷新间隔(秒) | 5 |
set -g repeat-time | 前缀键后可连续按功能键的时间(毫秒) | 500 |
set -g escape-time | Esc 键响应延迟(毫秒,Neovim 用户设低) | 0 |
set -g focus-events on | 让 tmux 传递焦点事件给终端程序 | on |
setw -g mode-keys vi | 复制模式使用 vi 键位 | vi |
setw -g aggressive-resize on | 多客户端连接时以可见区域为准调整大小 | on |
日常工作流
快速上手的 4 个动作
| 步骤 | 操作 | 说明 |
|---|
| 1 | tmux new -s dev | 启动命名会话 |
| 2 | Prefix + | 或 Prefix + - | 分屏查看日志/服务 |
| 3 | Prefix + d | 断开连接但保留现场 |
| 4 | tmux a -t dev | 下次回来继续工作 |
常见场景组合
| 场景 | 操作步骤 |
|---|
| SSH 开发防断线 | tmux new -s dev → 编码 → 断线后 tmux a -t dev 恢复 |
| 并排看代码和终端 | Prefix + | 分屏 → 右侧 Prefix + c 开新窗口 → 左侧编辑,右侧运行 |
| 临时放大某窗格 | Prefix + z 最大化 → 检查完再 Prefix + z 还原 |
| 复制终端输出 | Prefix + [ 进入复制模式 → 空格 开始选择 → Enter 复制 → Prefix + ] 粘贴 |
| 保留完整开发环境 | 配置 tmuxinator,见 [[tmuxinator |
进阶方向