tmux
tmux 是一个终端多路复用器(terminal multiplexer),它允许用户在一个终端窗口中运行多个终端会话,并通过分割窗口、创建标签页等方式高效管理这些会话。
tmux [命令] [选项]tmux 提供三个核心概念:
- 会话(Session):一个独立的工作环境,可以包含多个窗口,每个会话有唯一的名称或编号
- 窗口(Window):类似于浏览器中的标签页,一个会话可以包含多个窗口,每个窗口占据整个终端区域
- 面板(Pane):一个窗口可以分割为多个面板,每个面板运行一个独立的终端实例

前缀键是 tmux 的特殊快捷键,必须在执行大多数 tmux 快捷键之前按下,用于区分普通终端输入和 tmux 的控制命令。
默认前缀键是
Ctrl+b,即先按下Ctrl+b,再按对应的快捷键。 例如帮助命令的快捷键是Ctrl+b ?:先按Ctrl+b,再按?,即可显示帮助信息。
新建会话
$ tmux [new-session] # 创建会话,默认编号 0、1、2...$ tmux new -s <session-name> # 创建指定名称的会话一个 tmux 会话底部有一个绿色的状态栏,左侧是会话信息,右侧是系统信息。

左侧信息:
[0]表示 0 号会话,0表示 0 号窗口,zsh表示使用的 shell,*表示该窗口已激活。
重命名会话
$ tmux rename-session [-t target-session] new-name查看会话
$ tmux ls # 查看所有会话信息$ tmux list-session # 等价命令分离会话
$ tmux detach # 退出当前会话,会话在后台继续运行接入会话
$ tmux attach -t <session-name> # 重新接入已存在的会话切换会话
$ tmux switch -t <session-name> # 切换到指定会话杀死会话
$ tmux kill-session -t <session-name> # 彻底删除指定会话新建窗口
$ tmux new-window # 创建新窗口,默认编号递增$ tmux new-window -n <window-name> # 创建指定名称的窗口
从状态栏左侧可以看到当前会话中的窗口列表。
重命名窗口
$ tmux rename-window [-t target-window] new-name查看窗口
$ tmux list-windows # 查看当前会话中所有窗口$ tmux lsw # 简写$ tmux lsw -a # 列出所有会话中的所有窗口
*表示正在使用的窗口,-表示最近使用的窗口。
切换窗口
$ tmux select-window -t <window-name> # 切换到指定窗口$ tmux next-window # 切换到下一个窗口$ tmux previous-window # 切换到上一个窗口移动窗口
$ tmux move-window -t target_index # 移动窗口到指定编号$ tmux swap-window -t +1 # 与下一个窗口交换位置$ tmux swap-window -t -1 # 与上一个窗口交换位置退出窗口
$ tmux kill-window # 关闭当前窗口$ exit # 等价操作划分面板
$ tmux split-window -h # 水平分割(左右排列)$ tmux split-window -v # 垂直分割(上下排列)$ tmux split-window -h -p 30 # 水平分割,右侧面板占 30%查看面板
$ tmux list-panes # 列出当前窗口中的所有面板$ tmux lsp # 简写$ tmux lsp -a # 列出所有会话中的所有面板切换面板
$ tmux select-pane -U # 切换到上方面板$ tmux select-pane -D # 切换到下方面板$ tmux select-pane -L # 切换到左边面板$ tmux select-pane -R # 切换到右边面板调整面板大小
$ tmux resize-pane -L/-R/-U/-D amount # 向指定方向扩展 amount 个字符$ tmux resize-pane -Z # 最大化/还原面板杀死面板
$ tmux kill-pane # 关闭当前面板$ tmux kill-pane -t pane_index # 关闭指定编号的面板$ tmux kill-pane -a # 关闭除活动面板外的所有面板$ tmux list-keys # 列出所有快捷键及其对应的命令$ tmux list-commands # 列出所有 tmux 命令及其参数$ tmux info # 列出当前所有 tmux 会话的信息$ tmux source-file ~/.tmux.conf # 重新加载 tmux 配置以下快捷键均需先按前缀键(默认 Ctrl+b)。
会话管理
| 功能 | 对应命令行 | 快捷键 |
|---|---|---|
| 新建会话 | tmux new -s <session-name> |
无 |
| 分离当前会话 | tmux detach |
d / D |
| 显示会话列表并切换 | tmux list-sessions / tmux attach -t session_name |
s |
| 重命名当前会话 | tmux rename-session new_name |
$ |
| 切换到上一个会话 | tmux previous-session |
( |
| 切换到下一个会话 | tmux next-session |
) |
| 杀死指定会话 | tmux kill-session -t session_name |
无 |
窗口管理
| 功能 | 对应命令行 | 快捷键 |
|---|---|---|
| 创建新窗口 | tmux new-window |
c |
| 切换到下一个窗口 | tmux next-window |
n |
| 切换到上一个窗口 | tmux previous-window |
p |
| 切换到指定编号窗口 | tmux select-window -t window_index |
0-9 |
| 显示窗口列表并切换 | tmux list-windows |
w |
| 重命名当前窗口 | tmux rename-window new_name |
, |
| 关闭当前窗口 | tmux kill-window |
& |
| 与上一个窗口交换位置 | tmux swap-window -t -1 |
{ |
| 与下一个窗口交换位置 | tmux swap-window -t +1 |
} |
| 查找窗口 | tmux find-window pattern |
f |
| 移动窗口到指定编号 | tmux move-window -t target_index |
无 |
面板管理
| 功能 | 对应命令行 | 快捷键 |
|---|---|---|
| 水平分割面板 | tmux split-window -h |
% |
| 垂直分割面板 | tmux split-window -v |
" |
| 切换到指定方向面板 | tmux select-pane -L/-R/-U/-D |
方向键 |
| 显示面板编号并切换 | tmux display-panes |
q |
| 关闭当前面板 | tmux kill-pane |
x |
| 最大化/恢复当前面板 | tmux resize-pane -Z |
z |
| 调整面板大小 | tmux resize-pane -L/-R/-U/-D amount |
Ctrl+方向键 |
| 垂直均分布局 | tmux select-layout even-horizontal |
Alt+1 |
| 水平均分布局 | tmux select-layout even-vertical |
Alt+2 |
| 主面板水平布局 | tmux select-layout main-horizontal |
Alt+3 |
| 主面板垂直布局 | tmux select-layout main-vertical |
Alt+4 |
| 平铺布局 | tmux select-layout tiled |
Alt+5 |
| 将面板转换为窗口 | tmux break-pane |
Ctrl-b ! |
辅助快捷键
| 快捷键 | 功能 | 说明 |
|---|---|---|
Ctrl-b : |
进入命令模式 | 打开命令提示符,输入 tmux 命令(如 split-window、set-option) |
Ctrl-b ? |
显示帮助(快捷键列表) | 查看所有可用快捷键,进入复制模式浏览 |
配置 tmux
Section titled “配置 tmux”tmux 的配置通过 ~/.tmux.conf 文件管理,配置文件会在 tmux 启动时加载。文件内容就是 tmux 命令。若想在已开启的会话中重新加载配置,可用 tmux source-file ~/.tmux.conf。
自定义配置快捷键的例子:
# 更改前缀键为 Ctrl-aset -g prefix C-a # 设置前缀为 C-a,全局有效 -gunbind C-b # 取消原来的前缀 C-bbind C-a send-prefix # 设置 C-a 为发送前缀
# 自定义面板切换为 Vim 风格bind h select-pane -Lbind j select-pane -Dbind k select-pane -Ubind l select-pane -R
# 快速重新加载配置bind r source-file ~/.tmux.conf \; display "Reloaded!"