返回首页

tmux 使用指南

简介

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-tmuxNord 配色主题
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 有什么区别?

特性tmuxScreen
许可协议BSD / ISCGPL
配置方式更现代、灵活较老
窗口和面板支持仅窗口
配置重载支持热重载需要重启
状态栏高度可定制基础
垂直分割原生支持需要补丁
活动监控完善基础

Q6: 如何退出复制模式?

A: 按 qEscape

Q7: 前缀键和 Bash/Vim 快捷键冲突?

A: 可以修改前缀键为 Ctrl + aAlt + 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