Tmux 命令速查表
Tmux 是一个强大的终端复用器(terminal multiplexer),允许你在单个终端窗口中创建、访问和控制多个终端会话。本速查表覆盖了日常开发中最常用的 Tmux 操作,包括会话管理、窗口切换、窗格布局、个性化配置和剪贴板集成。建议先掌握前缀键(默认为 Ctrl+b)和基本会话操作,再逐步学习窗格管理和自定义配置。
使用场景速查
| 你要做什么 | 用哪个快捷键 |
| 新建 Tmux 会话 | tmux new -s name |
| 断开会话(后台运行) | prefix + d |
| 重新连接会话 | tmux attach -t name |
| 创建新窗口 | prefix + c |
| 切换窗口 | prefix + 数字 |
| 垂直分割窗格 | prefix + % |
| 水平分割窗格 | prefix + \" |
| 在窗格间切换 | prefix + 方向键 |
| 浏览历史输出 | prefix + [ |
| 查看所有快捷键 | prefix + ? |
会话管理
``bash
# 创建会话
tmux new -s mysession # 创建名为 mysession 的新会话
tmux new # 创建匿名新会话
tmux new-session -s web # 创建 web 会话
# 断开会话(后台运行程序) prefix + d # 断开当前会话(detach),程序继续运行
# 重新连接 tmux attach -t mysession # 重新连接 mysession 会话 tmux a -t mysession # 简写形式 tmux attach # 连接唯一会话(只有一个时)
# 列出会话 tmux ls # 列出所有运行中的会话 prefix + s # 在 Tmux 内交互式选择会话
# 关闭会话 tmux kill-session -t mysession # 关闭指定会话 tmux kill-server # 关闭 Tmux 服务器(所有会话) prefix + & # 关闭当前窗口(会提示确认) prefix + x # 关闭当前窗格(会提示确认)
# 重命名 tmux rename-session -t old new # 从外部重命名会话 prefix + $ # 在 Tmux 内重命名当前会话
# 切换会话
prefix + ( # 切换到上一个会话
prefix + ) # 切换到下一个会话
prefix + w # 以菜单方式选择会话和窗口
`
窗口操作
`bash
# 创建与关闭
prefix + c # 创建新窗口
prefix + & # 关闭当前窗口(确认后)
tmux new-window -n web # 从命令行创建命名窗口
# 切换窗口 prefix + 0-9 # 切换到指定编号的窗口 prefix + p # 切换到上一个窗口(previous) prefix + n # 切换到下一个窗口(next) prefix + w # 以列表形式选择窗口 prefix + f # 按名称搜索窗口
# 窗口管理 prefix + , # 重命名当前窗口 prefix + . # 移动窗口(输入新编号) prefix + l # 切换到上一个活动窗口 :swap-window -t -1 # 将当前窗口与前一个窗口交换 :swap-window -t +1 # 将当前窗口与后一个窗口交换 tmux move-window -s 1 -t 3 # 将窗口 1 移到位置 3
# 窗口索引
tmux set -g base-index 1 # 窗口索引从 1 开始(默认从 0)
:move-window -r # 重排所有窗口编号(无间隙)
:display-message -p '#I' # 显示当前窗口索引号
`
窗格操作
`bash
# 创建窗格
prefix + % # 垂直分割(左右窗格)
prefix + " # 水平分割(上下窗格)
:split-window -h # 命令方式垂直分割
:split-window -v # 命令方式水平分割
# 窗格导航 prefix + ←↑→↓ # 按方向切换到相邻窗格 prefix + o # 循环切换到下一个窗格 prefix + ; # 切换到上一个活动窗格 prefix + q # 显示窗格编号(按编号快速切换)
# 窗格调整 prefix + Ctrl+方向键 # 按方向调整窗格大小(1 个单元) :resize-pane -D 10 # 向下增加 10 行 :resize-pane -U 5 # 向上增加 5 行 :resize-pane -L 20 # 向左增加 20 列 :resize-pane -R 15 # 向右增加 15 列
# 窗格控制
prefix + ! # 将当前窗格提升为独立窗口(break pane)
prefix + x # 关闭当前窗格(确认后)
prefix + z # 最大化/恢复当前窗格(zoom toggle)
prefix + space # 切换窗格布局(循环)
prefix + { # 当前窗格左移/上移
prefix + } # 当前窗格右移/下移
prefix + q + 数字 # 按编号直接切换到指定窗格
`
布局管理
`bash
# 内置布局
prefix + space # 循环切换以下布局
prefix + M-1 # even-horizontal(等分水平)
prefix + M-2 # even-vertical(等分垂直)
prefix + M-3 # main-horizontal(主区水平)
prefix + M-4 # main-vertical(主区垂直)
prefix + M-5 # tiled(平铺)
:select-layout even-horizontal # 命令方式选择布局 :select-layout tiled # 平铺布局 :select-layout -E # 使用上一个布局
# 自定义布局 :setw -g window-layout tiled # 设置新窗口默认布局 :setw -g force-width 80 # 强制窗格宽度 :setw -g force-height 40 # 强制窗格高度 :join-pane -s web:2.1 # 将会话 web 窗口 2 的窗格 1 移动到当前 :join-pane -t .1 # 将当前窗口窗格 1 移动到新位置 :display-panes # 显示所有窗格编号
# 同步输入 :setw synchronize-panes on # 同步所有窗格输入(同屏操作) :setw synchronize-panes off # 关闭同步输入 prefix + :setw synchronize-panes # 快捷键方式切换
# 保存/恢复布局
tmux list-windows -a # 列出所有窗口布局信息
:show-window-options -g # 查看窗口全局选项
:save-buffer ~/tmux-layout.txt # 保存缓冲区内容
`
配置定制
`bash
# ~/.tmux.conf 配置示例
# 修改前缀键
set -g prefix C-a # 将前缀改为 Ctrl+a
unbind C-b # 取消默认前缀
bind C-a send-prefix # 按两次发送前缀
# 鼠标支持 set -g mouse on # 启用鼠标(点击/拖动/滚动)
# 外观设置 set -g default-terminal "screen-256color" # 256 色终端 set -g status-bg colour235 # 状态栏背景色 set -g status-fg white # 状态栏前景色 set -g status-left-length 40 # 左侧状态栏最大长度 set -g status-right-length 80 # 右侧状态栏最大长度 set -g status-justify centre # 状态栏居中对齐 set -g status-interval 5 # 状态栏刷新间隔(秒)
# 状态栏内容 set -g status-left "#[fg=green]Session: #S " set -g status-right "#[fg=yellow]%Y-%m-%d %H:%M " set -g window-status-current-format "#[fg=cyan,bold]#I:#W" set -g window-status-format "#[fg=white]#I:#W"
# 快捷键优化 bind r source-file ~/.tmux.conf \; display-message "Config reloaded" # Ctrl+b r 重载配置 bind | split-window -h # 用 | 垂直分割 bind - split-window -v # 用 - 水平分割 bind H resize-pane -L 5 # 快速调整 bind J resize-pane -D 5 bind K resize-pane -U 5 bind L resize-pane -R 5
# 时间戳和消息 set -g display-time 3000 # 消息显示 3 秒 set -g message-style "bg=colour235,fg=white" set -g message-command-style "bg=colour235,fg=yellow"
# 历史缓冲区
set -g history-limit 50000 # 每个窗格历史行数
setw -g mode-keys vi # 复制模式使用 vi 快捷键
`
剪贴板与复制模式
`bash
# 进入复制模式
prefix + [ # 进入复制模式(滚动查看历史)
prefix + PageUp # 直接进入复制模式并翻页
:capture-pane -S - # 将当前窗格全部内容捕获到缓冲区
# 复制模式操作(vi 模式) # 先设置:setw -g mode-keys vi h / j / k / l # 左/下/上/右移动 Ctrl+b / Ctrl+f # 上翻页 / 下翻页 gg / G # 跳到开头 / 末尾 0 / $ # 行首 / 行尾 /pattern # 向前搜索 ?pattern # 向后搜索 n / N # 下一个 / 上一个匹配
# 选择与复制 Space # 开始选中文本 Enter # 复制选中文本到 Tmux 缓冲区 prefix + ] # 粘贴 Tmux 缓冲区内容
# 复制模式 vi 风格绑定(推荐配置) # bind -T copy-mode-vi v send-keys -X begin-selection # bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel # bind -T copy-mode-vi C-v send-keys -X rectangle-toggle
# 系统剪贴板集成 # Linux(需要 xclip) set -g set-clipboard on bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -selection clipboard" bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -selection clipboard"
# macOS(使用 pbcopy) # bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "pbcopy" # bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "pbcopy"
# 缓冲区管理 :show-buffer # 显示当前缓冲区内容 :list-buffers # 列出所有缓冲区 :choose-buffer # 交互式选择缓冲区 :save-buffer ~/output.txt # 保存缓冲区到文件 :delete-buffer # 删除当前缓冲区 :clear-history # 清除当前窗格历史 ``
会话管理(7)
| 命令 | 难度 | ||
|---|---|---|---|
tmux new -s <name>创建新的 Tmux 会话并命名 | 基础 | tmux new -s mysession | |
prefix + d断开当前会话(后台继续运行) | 基础 | prefix + d | |
tmux attach -t <name>重新连接指定会话 | 基础 | tmux attach -t mysession | |
tmux ls列出所有运行中的 Tmux 会话 | 基础 | tmux ls | |
tmux kill-session -t <name>关闭指定会话 | 基础 | tmux kill-session -t mysession | |
tmux kill-server关闭 Tmux 服务器及所有会话 | 中级 | tmux kill-server | |
prefix + $ / tmux rename-session重命名当前会话 | 基础 | prefix + $ |
窗口操作(5)
| 命令 | 难度 | ||
|---|---|---|---|
prefix + c创建新窗口 | 基础 | prefix + c | |
prefix + 0-9切换到指定编号的窗口 | 基础 | prefix + 1 | |
prefix + p / prefix + n切换到上一个/下一个窗口 | 基础 | prefix + p | |
prefix + w以列表形式浏览和选择窗口 | 中级 | prefix + w | |
prefix + , (comma)重命名当前窗口 | 基础 | prefix + , |
窗格操作(6)
| 命令 | 难度 | ||
|---|---|---|---|
prefix + "%"垂直分割当前窗格(左右) | 基础 | prefix + "%" | |
prefix + '"'水平分割当前窗格(上下) | 基础 | prefix + '"' | |
prefix + arrow keys按方向切换到相邻窗格 | 基础 | prefix + ← | |
prefix + o循环切换到下一个窗格 | 基础 | prefix + o | |
prefix + z最大化/恢复当前窗格(缩放切换) | 基础 | prefix + z | |
prefix + Ctrl+arrow按方向调整窗格大小(1 个单元) | 中级 | prefix + Ctrl+↓ |
布局管理(3)
| 命令 | 难度 | ||
|---|---|---|---|
prefix + space循环切换窗格布局 | 基础 | prefix + space | |
prefix + M-1 / M-2 / M-3 / M-4 / M-5切换预设布局(水平/垂直/主区水平/主区垂直/平铺) | 中级 | prefix + M-5 | |
:setw synchronize-panes on同步所有窗格输入(同屏操作所有窗格) | 高级 | :setw synchronize-panes on |
配置定制(9)
| 命令 | 难度 | ||
|---|---|---|---|
set -g prefix C-a将默认前缀键 Ctrl+b 改为 Ctrl+a | 中级 | set -g prefix C-a | |
set -g mouse on启用鼠标支持(点击/拖动/滚动) | 基础 | set -g mouse on | |
set -g default-terminal "screen-256color"设置终端类型为 256 色支持 | 中级 | set -g default-terminal "screen-256color" | |
set -g status-interval 5设置状态栏刷新间隔(秒) | 中级 | set -g status-interval 5 | |
set -g history-limit 50000设置每个窗格的滚动历史行数上限 | 中级 | set -g history-limit 50000 | |
setw -g mode-keys vi复制模式中使用 vi 风格快捷键 | 中级 | setw -g mode-keys vi | |
bind r source-file ~/.tmux.conf绑定快捷键重载配置文件(prefix + r) | 中级 | bind r source-file ~/.tmux.conf | |
set -g status-left "#[fg=green]Session: #S"自定义状态栏左侧内容(会话名等) | 高级 | set -g status-left "#[fg=green]Session: #S " | |
set -g status-right "#[fg=yellow]%Y-%m-%d %H:%M"自定义状态栏右侧内容(日期时间等) | 高级 | set -g status-right "#[fg=yellow]%Y-%m-%d %H:%M " |
剪贴板与复制(10)
| 命令 | 难度 | ||
|---|---|---|---|
prefix + [进入复制模式(滚动查看历史输出) | 中级 | prefix + [ | |
prefix + ]粘贴 Tmux 缓冲区内容 | 基础 | prefix + ] | |
Space / Enter在复制模式下开始选择/复制选中文本 | 中级 | Space | |
bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel绑定 vi 风格快捷键 y 复制选中内容并退出复制模式 | 高级 | bind -T copy-mode-vi y send-keys -X copy-selection-and-cancel | |
bind -T copy-mode-vi v send-keys -X begin-selection绑定 vi 风格快捷键 v 开始选择文本 | 高级 | bind -T copy-mode-vi v send-keys -X begin-selection | |
:capture-pane -S -将当前窗格全部内容捕获到缓冲区 | 中级 | :capture-pane -S - | |
:show-buffer显示当前缓冲区内容 | 中级 | :show-buffer | |
:list-buffers列出所有缓冲区 | 中级 | :list-buffers | |
:save-buffer <file>将缓冲区内容保存到文件 | 中级 | :save-buffer ~/output.txt | |
:clear-history清除当前窗格的滚动历史 | 中级 | :clear-history |