简介
tmux(Terminal Multiplexer,终端复用器)是一个强大的命令行工具,它允许你在一个终端窗口中:
- 保持会话持续运行:关闭终端后程序不会终止,稍后可以随时恢复
- 分割窗口:将单个终端窗口分割成多个面板,同时查看和操作多个程序
- 管理多个窗口:在一个会话中创建多个窗口,像浏览器标签页一样切换
- 会话共享:允许多个用户同时连接到同一个会话,实现协作
tmux 的命名来自 Terminal Multiplexer。类似的工具还有 GNU Screen,但 tmux 功能更现代、配置更灵活。
为什么使用 tmux?
| 场景 | 解决方案 |
|---|---|
| SSH 远程连接不稳定,执行长时间任务时断线 | tmux 会话在后台持续运行 |
| 需要同时监控多个日志文件 | 一个窗口分割成多个面板 |
| 需要频繁切换不同的工作环境 | 每个项目一个会话,随时切换 |
| 想在多个终端看到相同的输出 | 会话共享功能 |
安装
Linux
# Debian / Ubuntu
sudo apt update && sudo apt install tmux
# Fedora / CentOS / RHEL
sudo dnf install tmux
sudo yum install tmux # 旧版本
# Arch Linux
sudo pacman -S tmux
# openSUSE
sudo zypper install tmux
macOS
# 使用 Homebrew
brew install tmux
# 使用 MacPorts
sudo port install tmux
Windows
# WSL (Windows Subsystem for Linux) - 在 WSL 终端内安装
sudo apt install tmux
# MSYS2 / Git Bash
pacman -S tmux
验证安装
tmux -V
# 输出类似:tmux 3.4
核心概念
tmux 采用三层结构来组织你的工作空间:
┌─────────────────────────────────────────────┐
│ Server │
│ ┌───────────────────────────────────────┐ │
│ │ Session 1 │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ Window 1│ │ Window 2│ │ Window 3│ │ │
│ │ │ ┌─┬─┐ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ ├─┼─┤ │ │ │ │ │ │ │
│ │ │ │ │ │ │ │ │ │ │ │ │
│ │ │ └─┴─┘ │ │ │ │ │ │ │
│ │ │ Pane │ │ │ │ │ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ │ │
│ └───────────────────────────────────────┘ │
│ ┌───────────────────────────────────────┐ │
│ │ Session 2 │ │
│ │ ... │ │
│ └───────────────────────────────────────┘ │
└─────────────────────────────────────────────┘
Session(会话)
会话是最高级别的容器。每个会话包含一组窗口,代表一个独立的工作环境。
- 会话在后台持续运行,即使你断开连接
- 你可以随时**附加(attach)**到一个已有的会话
- 可以创建多个会话,比如一个用于工作项目,一个用于个人项目
Window(窗口)
窗口相当于终端里的”标签页”。一个会话可以有多个窗口。
- 每个窗口占据整个终端屏幕
- 窗口有编号(从 0 开始)和名称
- 当前窗口会显示在状态栏中
Pane(面板)
面板是将窗口分割成的小区域,每个面板运行一个独立的终端。
- 一个窗口可以水平或垂直分割成多个面板
- 每个面板可以同时运行不同的命令
- 面板可以自由调整大小、移动位置
快速入门
启动 tmux
# 启动一个无名的 tmux 会话
tmux
# 启动一个命名的会话(推荐)
tmux new -s mysession
# 或
tmux new-session -s mysession
启动后,你会看到底部出现了一个绿色的状态栏,表示你已经在 tmux 会话中了。
最基本的操作
在 tmux 中,所有快捷键都需要先按前缀键(Prefix),默认是 Ctrl + b。
按下 Ctrl + b,松开,再按其他键
常用操作:
# 查看所有快捷键(在 tmux 中按)
Ctrl + b ?
# 创建新窗口
Ctrl + b c
# 切换到下一个窗口
Ctrl + b n
# 切换到上一个窗口
Ctrl + b p
# 水平分割面板
Ctrl + b "
# 垂直分割面板
Ctrl + b %
# 在面板间切换
Ctrl + b 方向键(↑↓←→)
# 暂时离开 tmux(detach),会话在后台运行
Ctrl + b d
重新连接会话
# 查看所有会话
tmux ls
# 附加到指定会话
tmux attach -t mysession
# 或
tmux a -t mysession
# 附加到上一个会话
tmux a
关闭会话
# 在 tmux 中直接退出所有 shell,会话会自动关闭
# 或在 tmux 外强制关闭会话
tmux kill-session -t mysession
# 关闭所有会话
tmux kill-server
会话管理(Session)
创建会话
# 基本创建
tmux new-session
tmux new-session -s work
# 创建时指定初始目录
tmux new-session -s project -c ~/projects/myapp
# 创建时直接运行命令(命令结束后窗口关闭)
tmux new-session -s server "npm start"
# 创建但不附加(在后台运行)
tmux new-session -d -s backend
查看会话
# 列出所有会话
tmux ls
tmux list-sessions
# 示例输出:
# work: 3 windows (created Sat Apr 19 09:30:00 2026) [140x40]
# blog: 1 windows (created Sat Apr 19 09:32:00 2026) [140x40]
附加/分离会话
# 分离当前会话(detach)
# 在 tmux 内按:Ctrl + b d
# 附加到会话
tmux attach -t work
tmux a -t work # 简写
# 如果会话已有客户端连接,强制附加(踢掉其他客户端)
tmux attach -d -t work
重命名会话
# 在 tmux 内
Ctrl + b $
# 或在命令行
tmux rename-session -t oldname newname
切换会话
# 在 tmux 内按
Ctrl + b s # 选择会话列表
Ctrl + b ( # 切换到上一个会话
Ctrl + b ) # 切换到下一个会话
Ctrl + b L # 切换到最后一个活跃会话
会话快捷键(在 tmux 内)
| 快捷键 | 功能 |
|---|---|
Ctrl + b d | 分离当前会话 |
Ctrl + b s | 列出所有会话并切换 |
Ctrl + b $ | 重命名当前会话 |
Ctrl + b ( | 切换到上一个会话 |
Ctrl + b ) | 切换到下一个会话 |
Ctrl + b L | 切换到最后一个活跃会话 |
窗口管理(Window)
创建窗口
# 在 tmux 内按
Ctrl + b c # 创建新窗口
# 创建并命名窗口(命令行)
tmux new-window -n editor
切换窗口
# 在 tmux 内按
Ctrl + b 0 # 切换到 0 号窗口
Ctrl + b 1 # 切换到 1 号窗口
Ctrl + b 2 # ...以此类推
Ctrl + b n # 切换到下一个窗口
Ctrl + b p # 切换到上一个窗口
Ctrl + b l # 切换到最后一个活跃窗口
Ctrl + b w # 打开窗口列表并选择
Ctrl + b f # 按名称查找窗口
关闭窗口
# 在 tmux 内按
Ctrl + b & # 关闭当前窗口(会确认)
# 或者直接关闭窗口中的所有面板(在 shell 中)
exit
重命名窗口
# 在 tmux 内按
Ctrl + b , # 重命名当前窗口
窗口快捷键速查
| 快捷键 | 功能 |
|---|---|
Ctrl + b c | 创建新窗口 |
Ctrl + b & | 关闭当前窗口 |
Ctrl + b , | 重命名当前窗口 |
Ctrl + b . | 移动窗口到其他编号 |
Ctrl + b 0~9 | 切换到对应编号窗口 |
Ctrl + b n | 下一个窗口 |
Ctrl + b p | 上一个窗口 |
Ctrl + b l | 最后一个活跃窗口 |
Ctrl + b w | 窗口列表选择 |
Ctrl + b f | 查找窗口 |
面板管理(Pane)
面板是 tmux 最强大的功能之一,让你在一个屏幕内同时操作多个终端。
创建面板
# 在 tmux 内按
Ctrl + b " # 水平分割(上下)
Ctrl + b % # 垂直分割(左右)
切换面板
# 在 tmux 内按
Ctrl + b ↑ # 切换到上方面板
Ctrl + b ↓ # 切换到下方面板
Ctrl + b ← # 切换到左方面板
Ctrl + b → # 切换到右方面板
Ctrl + b o # 切换到下一个面板(循环)
Ctrl + b ; # 切换到最后一个活跃面板
Ctrl + b q # 显示面板编号,按数字切换
调整面板大小
# 在 tmux 内按
Ctrl + b Ctrl + ↑ # 向上调整
Ctrl + b Ctrl + ↓ # 向下调整
Ctrl + b Ctrl + ← # 向左调整
Ctrl + b Ctrl + → # 向右调整
# 等分所有面板
Ctrl + b Alt + 1 # 水平等分
Ctrl + b Alt + 2 # 垂直等分
# 最大化/恢复当前面板
Ctrl + b z # 放大当前面板到全屏,再按一次恢复
关闭面板
# 在面板内的 shell 中输入
exit
# 或在 tmux 内按
Ctrl + b x # 关闭当前面板(会确认)
面板布局
# 在 tmux 内按
Ctrl + b Space # 循环切换预设布局
# 预设布局包括:
# - even-horizontal:所有面板水平等分
# - even-vertical:所有面板垂直等分
# - main-horizontal:上方一个大面板,下方小面板水平排列
# - main-vertical:左侧一个大面板,右侧小面板垂直排列
# - tiled:平铺排列
移动面板
# 在 tmux 内按
Ctrl + b { # 将当前面板与上一个交换
Ctrl + b } # 将当前面板与下一个交换
# 将面板移动到新窗口
Ctrl + b ! # 将当前面板拆分为独立窗口
面板快捷键速查
| 快捷键 | 功能 |
|---|---|
Ctrl + b " | 水平分割面板 |
Ctrl + b % | 垂直分割面板 |
Ctrl + b ↑↓←→ | 方向键切换面板 |
Ctrl + b o | 切换到下一个面板 |
Ctrl + b ; | 切换到最后一个活跃面板 |
Ctrl + b q | 显示面板编号 |
Ctrl + b z | 最大化/恢复面板 |
Ctrl + b x | 关闭当前面板 |
Ctrl + b { | 面板上移 |
Ctrl + b } | 面板下移 |
Ctrl + b ! | 面板移为新窗口 |
Ctrl + b Space | 切换布局 |
Ctrl + b Ctrl + ↑↓←→ | 调整面板大小 |
前缀键与快捷键
前缀键(Prefix)
tmux 的所有快捷键都需要先按前缀键。默认前缀键是 Ctrl + b。
修改前缀键
在 ~/.tmux.conf 中:
# 将前缀键改为 Ctrl + a(类似 GNU Screen)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# 或者改为 Alt + a
# set -g prefix M-a
发送前缀键到程序
如果你需要在使用 tmux 时按 Ctrl + b(例如 Emacs 或 Bash 中向后移动光标),按两次前缀键:
Ctrl + b Ctrl + b # 向当前程序发送 Ctrl + b
免前缀快捷键
在配置中可以绑定不需要前缀键的快捷键:
# 使用 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
复制模式
tmux 内置强大的文本复制功能,支持类似 Vim/Emacs 的操作方式。
进入复制模式
# 在 tmux 内按
Ctrl + b [ # 进入复制模式
# 按 q 或 Escape 退出复制模式
复制模式操作(Vim 风格)
| 按键 | 功能 |
|---|---|
↑ ↓ ← → | 移动光标 |
h j k l | 移动光标(Vim 风格) |
w / b | 下一个词 / 上一个词 |
0 | 行首 |
$ | 行尾 |
g | 文件开头 |
G | 文件末尾 |
Ctrl + u | 上半页 |
Ctrl + d | 下半页 |
? | 向上搜索 |
/ | 向下搜索 |
n | 下一个搜索结果 |
N | 上一个搜索结果 |
选中和复制
# 进入复制模式后
Space # 开始选择
Enter # 复制选中内容并退出
Escape # 取消选择
# 粘贴复制的内容
Ctrl + b ] # 粘贴 tmux 缓冲区内容
配置复制模式使用系统剪贴板
macOS:
# 在 ~/.tmux.conf 中
setw -g mode-keys vi
bind-key -T copy-mode-vi v send -X begin-selection
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "pbcopy"
Linux(使用 xclip):
# 安装 xclip
sudo apt install xclip
# 在 ~/.tmux.conf 中
setw -g mode-keys vi
bind-key -T copy-mode-vi v send -X begin-selection
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "xclip -selection clipboard"
Windows (WSL):
# 在 ~/.tmux.conf 中
setw -g mode-keys vi
bind-key -T copy-mode-vi v send -X begin-selection
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "clip.exe"
配置 tmux
tmux 的配置文件是 ~/.tmux.conf,修改后需要重载配置:
# 在 tmux 内重载配置
Ctrl + b :source-file ~/.tmux.conf
# 或在命令行
tmux source-file ~/.tmux.conf
基础配置推荐
# =============================================
# 基础设置
# =============================================
# 修改前缀键为 Ctrl + a
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# 启用鼠标支持
set -g mouse on
# 设置历史行数
set -g history-limit 10000
# 设置终端类型以支持真彩色
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",*256col*:Tc"
# 设置索引从 1 开始(更方便按)
set -g base-index 1
setw -g pane-base-index 1
# 重新编号窗口(删除后自动重新编号)
set -g renumber-windows on
# 设置状态栏刷新间隔(秒)
set -g status-interval 5
# 禁用窗口重命名
setw -g allow-rename off
setw -g automatic-rename off
# 设置状态栏位置(top/bottom)
set -g status-position bottom
键盘响应优化
# 减少按键延迟(对 Vim 用户很重要)
set -sg escape-time 10
# 增加重复超时
set -g repeat-time 600
通知设置
# 当窗口有活动时显示通知
setw -g monitor-activity on
set -g visual-activity on
# 当窗口内容变化时显示通知
setw -g monitor-bell on
快捷键绑定示例
# =============================================
# 快捷键绑定
# =============================================
# 使用 | 和 - 分割窗口(更直观)
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
unbind '"'
unbind %
# 使用 Vim 风格移动面板
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# 使用 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
# 使用 Shift + 方向键调整面板大小
bind -n S-Left resize-pane -L 2
bind -n S-Right resize-pane -R 2
bind -n S-Up resize-pane -U 2
bind -n S-Down resize-pane -D 2
# r 重载配置
bind r source-file ~/.tmux.conf \; display-message "Config reloaded!"
# 快速切换到最后一个窗口
bind a last-window
# 快速创建新窗口并保持当前目录
bind c new-window -c "#{pane_current_path}"
状态栏定制
状态栏是 tmux 底部的信息条,可以高度定制。
状态栏结构
┌─[左侧]──────────────┬────────[中间]────────┬───────────────[右侧]─┐
│ [session] 0:bash* 1 │ │ "hostname" 14:32 19Apr │
└─────────────────────┴──────────────────────┴──────────────────────┘
状态栏颜色设置
# 状态栏背景色和前景色
set -g status-bg colour235
set -g status-fg colour250
# 当前窗口样式
setw -g window-status-current-style fg=colour81,bg=colour238,bold
setw -g window-status-current-format " #I:#W#F "
# 非当前窗口样式
setw -g window-status-style fg=colour250,bg=colour235
setw -g window-status-format " #I:#W#F "
# 状态栏左侧长度
set -g status-left-length 40
# 状态栏右侧长度
set -g status-right-length 100
状态栏内容变量
| 变量 | 含义 |
|---|---|
#S | 会话名称 |
#W | 窗口名称 |
#I | 窗口索引 |
#P | 面板索引 |
#F | 窗口标志(* 当前窗口,- 上一个窗口) |
#H | 主机名 |
#h | 短主机名 |
#T | 面板标题 |
#(command) | shell 命令输出 |
#{pane_current_path} | 当前面板路径 |
%Y-%m-%d | 日期格式 |
%H:%M | 时间格式 |
状态栏配置示例
# 左侧:会话名 | 窗口列表
set -g status-left "#[fg=colour233,bg=colour241,bold] #S #[fg=colour241,bg=colour235,nobold]"
# 右侧:电池 | 负载 | 日期时间
set -g status-right "#[fg=colour235,bg=colour233]#[fg=colour250,bg=colour233] %Y-%m-%d %H:%M #[fg=colour241]#[fg=colour233,bg=colour241,bold] #H "
# 窗口分隔符
set -g window-status-separator ""
漂亮的配色方案示例
# 深色主题
set -g status-bg colour234
set -g status-fg colour137
set -g status-left "#[fg=colour233,bg=colour241,bold] #S "
set -g status-right "#[fg=colour233,bg=colour241,bold] %d/%m #[fg=colour233,bg=colour245,bold] %H:%M:%S "
setw -g window-status-current-format "#[fg=colour81,bg=colour238,bold] #I #[fg=colour250]#W "
setw -g window-status-format "#[fg=colour250,bg=colour234] #I #W "
插件与 TPM
TPM(Tmux Plugin Manager)是 tmux 的插件管理器,类似于 Vim 的 Vundle。
安装 TPM
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
在 ~/.tmux.conf 末尾添加:
# 插件管理器
set -g @plugin 'tmux-plugins/tpm'
# 插件列表
set -g @plugin 'tmux-plugins/tmux-sensible' # sensible 默认设置
set -g @plugin 'tmux-plugins/tmux-resurrect' # 保存和恢复会话
set -g @plugin 'tmux-plugins/tmux-continuum' # 自动保存和恢复
set -g @plugin 'tmux-plugins/tmux-yank' # 系统剪贴板集成
set -g @plugin 'tmux-plugins/tmux-copycat' # 增强搜索
set -g @plugin 'tmux-plugins/tmux-pain-control' # 面板控制增强
# 初始化插件管理器(必须保持这行在文件末尾)
run '~/.tmux/plugins/tpm/tpm'
安装插件
# 1. 保存 ~/.tmux.conf
# 2. 重载配置
tmux source-file ~/.tmux.conf
# 3. 在 tmux 内按
Ctrl + b I # 大写 I,安装插件
常用插件介绍
tmux-resurrect(会话保存/恢复)
set -g @plugin 'tmux-plugins/tmux-resurrect'
# 保存会话
Ctrl + b Ctrl + s
# 恢复会话
Ctrl + b Ctrl + r
tmux-continuum(自动保存)
set -g @plugin 'tmux-plugins/tmux-continuum'
# 启用自动恢复
set -g @continuum-restore 'on'
# 自动保存间隔(分钟)
set -g @continuum-save-interval '10'
tmux-yank(系统剪贴板)
set -g @plugin 'tmux-plugins/tmux-yank'
# 复制到系统剪贴板
# 在复制模式下按 y 复制
其他推荐插件
| 插件 | 功能 |
|---|---|
tmux-plugins/tmux-battery | 显示电池状态 |
tmux-plugins/tmux-cpu | 显示 CPU 使用率 |
tmux-plugins/tmux-net-speed | 显示网速 |
tmux-plugins/tmux-prefix-highlight | 前缀键状态高亮 |
arcticicestudio/nord-tmux | Nord 配色主题 |
jimeh/tmux-themepack | 多种配色主题包 |
卸载插件
# 1. 从 ~/.tmux.conf 中移除插件
# 2. 重载配置
# 3. 在 tmux 内按
Ctrl + b Alt + u # 卸载不在配置中的插件
高级技巧
1. 保持会话持久运行
# SSH 到服务器后启动 tmux
tmux new -s server
# 运行长时间任务
python long_running_script.py
# 按 Ctrl + b d 分离
# 断开 SSH
# 稍后重新 SSH 并恢复
tmux attach -t server
2. 开发工作流示例
# 创建开发会话
tmux new-session -d -s dev -n editor
tmux send-keys -t dev:editor 'vim' Enter
tmux new-window -t dev -n server
tmux send-keys -t dev:server 'npm run dev' Enter
tmux new-window -t dev -n logs
tmux send-keys -t dev:logs 'tail -f /var/log/app.log' Enter
tmux select-window -t dev:0
tmux attach -t dev
3. 快速布局脚本
创建一个 tmux-dev.sh 脚本:
#!/bin/bash
SESSION="project"
# 如果会话已存在,直接附加
if tmux has-session -t $SESSION 2>/dev/null; then
tmux attach -t $SESSION
exit 0
fi
# 创建会话和初始窗口
tmux new-session -d -s $SESSION -n code
# 窗口 1: 代码编辑
tmux send-keys -t $SESSION:code 'cd ~/projects/myapp && vim' Enter
# 窗口 2: 服务器(上下分割)
tmux new-window -t $SESSION -n server
tmux split-window -t $SESSION:server -v
tmux send-keys -t $SESSION:server.top 'cd ~/projects/myapp && npm run dev' Enter
tmux send-keys -t $SESSION:server.bottom 'cd ~/projects/myapp && npm test' Enter
# 窗口 3: 终端
tmux new-window -t $SESSION -n shell
tmux send-keys -t $SESSION:shell 'cd ~/projects/myapp' Enter
# 选择第一个窗口并附加
tmux select-window -t $SESSION:code
tmux attach -t $SESSION
4. 会话共享(Pair Programming)
# 用户 A 创建共享会话
tmux -S /tmp/shared new -s pair
chmod 777 /tmp/shared
# 用户 B 连接到同一会话
tmux -S /tmp/shared attach
# 双方可以看到相同的屏幕并操作
5. 在配置中使用条件判断
# 根据操作系统应用不同设置
if-shell 'uname | grep -q Darwin' {
# macOS 设置
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "pbcopy"
} {
# Linux 设置
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "xclip -selection clipboard"
}
6. 弹出式菜单
# 在 tmux 内按
Ctrl + b :display-menu -T "My Menu" 'Top' t 'select-pane -U' 'Bottom' b 'select-pane -D'
7. 捕获面板内容到文件
# 在 tmux 内按
Ctrl + b :capture-pane
Ctrl + b :save-buffer ~/output.txt
8. 批量执行命令到所有面板
# 在 tmux 内按
Ctrl + b :setw synchronize-panes on
# 现在你在任意面板输入的命令会同步到所有面板
# 关闭同步
Ctrl + b :setw synchronize-panes off
常见问题
Q1: 退出 tmux 后程序停止了?
A: 你没有正确使用 tmux。应该先启动 tmux,在 tmux 会话中运行程序,然后用 Ctrl + b d 分离会话,而不是关闭终端。
Q2: 鼠标滚动不起作用?
A: 在 ~/.tmux.conf 中添加:
set -g mouse on
启用鼠标后,需要按住 Shift 键再用鼠标选择才能复制到系统剪贴板。
Q3: Vim 中颜色显示不正确?
A: 确保你的 ~/.tmux.conf 中有:
set -g default-terminal "screen-256color"
set -ga terminal-overrides ",*256col*:Tc"
Q4: 如何清除 tmux 的所有历史记录?
A: 在 tmux 内按 Ctrl + b :,然后输入:
clear-history
Q5: tmux 和 Screen 有什么区别?
| 特性 | tmux | Screen |
|---|---|---|
| 许可协议 | BSD / ISC | GPL |
| 配置方式 | 更现代、灵活 | 较老 |
| 窗口和面板 | 支持 | 仅窗口 |
| 配置重载 | 支持热重载 | 需要重启 |
| 状态栏 | 高度可定制 | 基础 |
| 垂直分割 | 原生支持 | 需要补丁 |
| 活动监控 | 完善 | 基础 |
Q6: 如何退出复制模式?
A: 按 q 或 Escape。
Q7: 前缀键和 Bash/Vim 快捷键冲突?
A: 可以修改前缀键为 Ctrl + a 或 Alt + a,或者为 tmux 绑定其他快捷键。
快捷键速查表
系统操作
| 快捷键 | 功能 |
|---|---|
Ctrl + b ? | 显示所有快捷键 |
Ctrl + b : | 进入命令模式 |
Ctrl + b d | 分离当前会话 |
Ctrl + b D | 选择客户端分离 |
Ctrl + b r | 重载配置(需手动绑定) |
Ctrl + b t | 显示时钟 |
Ctrl + b ~ | 显示面板历史 |
会话操作
| 快捷键 | 功能 |
|---|---|
Ctrl + b s | 会话列表 |
Ctrl + b $ | 重命名会话 |
Ctrl + b ( | 上一个会话 |
Ctrl + b ) | 下一个会话 |
Ctrl + b L | 最后一个活跃会话 |
窗口操作
| 快捷键 | 功能 |
|---|---|
Ctrl + b c | 创建新窗口 |
Ctrl + b & | 关闭当前窗口 |
Ctrl + b , | 重命名窗口 |
Ctrl + b . | 移动窗口编号 |
Ctrl + b 0-9 | 切换到对应窗口 |
Ctrl + b n | 下一个窗口 |
Ctrl + b p | 上一个窗口 |
Ctrl + b l | 最后一个活跃窗口 |
Ctrl + b w | 窗口列表 |
Ctrl + b f | 查找窗口 |
面板操作
| 快捷键 | 功能 |
|---|---|
Ctrl + b " | 水平分割 |
Ctrl + b % | 垂直分割 |
Ctrl + b ↑↓←→ | 方向切换 |
Ctrl + b q | 显示面板编号 |
Ctrl + b o | 下一个面板 |
Ctrl + b ; | 上一个活跃面板 |
Ctrl + b z | 最大化/恢复面板 |
Ctrl + b x | 关闭面板 |
Ctrl + b { | 面板前移 |
Ctrl + b } | 面板后移 |
Ctrl + b ! | 面板变为窗口 |
Ctrl + b Space | 切换布局 |
复制模式
| 快捷键 | 功能 |
|---|---|
Ctrl + b [ | 进入复制模式 |
Ctrl + b ] | 粘贴 |
Ctrl + b = | 选择粘贴缓冲区 |
Space | 开始选择 |
Enter | 复制并退出 |
q / Escape | 退出复制模式 |
命令行速查
# 会话管理
tmux new -s <name> # 创建会话
tmux ls # 列出会话
tmux attach -t <name> # 附加会话
tmux attach -d -t <name> # 强制附加(踢掉其他)
tmux detach # 分离当前会话
tmux kill-session -t <name> # 关闭会话
tmux kill-server # 关闭所有会话
tmux rename-session -t <old> <new>
# 窗口管理
tmux new-window -n <name>
tmux select-window -t <index>
tmux kill-window -t <index>
tmux rename-window -t <index> <name>
# 面板管理
tmux split-window -v # 垂直分割
tmux split-window -h # 水平分割
tmux select-pane -U/D/L/R # 切换面板
tmux resize-pane -U/D/L/R <n> # 调整面板大小
tmux swap-pane -U/D # 交换面板
tmux kill-pane -t <index>
# 发送命令到会话
tmux send-keys -t <session>:<window> 'command' Enter