tmux
Tmux 是一个终端复用器(terminal multiplexer),非常有用,属于常用的开发工具。
# 基础概念
tmux 的核心是三级嵌套结构:会话(Session) > 窗口(Window) > 窗格(Pane)。会话是顶层容器与持久化单元,窗口是会话内的标签页 / 工作区,窗格是窗口内的分屏。
- 会话(Session)
本质:tmux 最顶层的独立工作区/项目容器,是进程与状态的持久化核心载体。
核心特性:
支持后台独立运行(detach 操作),关闭终端、断开 SSH 连接,均不影响会话内正在运行的任务。
可随时重新接入(attach 操作),一键恢复完整工作现场,无需重新启动任务。
一个会话可包含多个窗口,不同会话的运行环境完全隔离,互不干扰。
类比:一个独立的项目文件夹,或一间专属的工作房间,所有相关操作都在这个空间内完成。
- 窗口(Window)
本质:隶属于会话的全屏工作标签页,默认占据整个终端屏幕,是会话内的任务分类单元。
核心特性:
一个会话可创建多个窗口,支持快速切换(类似浏览器标签页切换逻辑),提升同项目内多任务效率。
每个窗口可进一步分割为多个窗格(Pane),实现单屏幕多终端并行操作。
窗口具有强依附性,仅属于某一个会话,无法跨会话独立存在,会话关闭则其下所有窗口同步关闭。
类比:浏览器的标签页,或工作房间里的一张桌子,每张桌子(窗口)可承载不同的具体任务。
- 层级关系(一句话总结)
核心层级:会话(项目) → 窗口(标签页) → 窗格(分屏)
1 个会话 = N 个窗口(一个项目可包含多个任务标签)
1 个窗口 = N 个窗格(一个任务标签可拆分多个并行终端)
窗格是 tmux 最小的执行单元,每个窗格对应一个独立的伪终端,可独立执行命令。
# 优点
- 保持会话不中断:即使 SSH 断开,任务也能继续运行,重连后可恢复。
- 多任务并行更高效:一个终端里可同时管理多个窗口和窗格。
- 远程开发更稳定:特别适合服务器运维、日志观察和长任务执行。
- 键盘操作流畅:减少鼠标切换成本,提升终端操作效率。
# 操作
# 会话(session)
- 会话管理
tmux ls: 查看当前所有的 Tmux 会话tmux new -s <session-name>: 新建会话,为会话起名tmux detach: 分离会话tmux attach -t <session-name>: 接入会话tmux kill-session -t <session-name>: 杀死某个会话tmux switch -t <session-name>: 切换会话tmux rename-session -t 0 <new-name>: 重命名会话
- 会话快捷键
Ctrl + b -> d: 退出(离开)当前 session(后台保留,最常用)Ctrl + b -> s: 列出所有会话,选择进入. 弹出会话列表 → 用上下方向键选 → 按回车进入Ctrl + b -> L: 直接切换到上一个会话(超快).在最近两个会话之间来回切Ctrl + b $: 重命名当前会话
# 窗口管理(window)
tmux new-window -n <window-name>: 新建一个指定名称的窗口- 切换窗口
tmux select-window -t <window-number>: 切换到指定编号的窗口tmux select-window -t <window-name>: 切换到指定名称的窗口
tmux rename-window <new-name>: 重命名窗口- 窗口快捷键
Ctrl + b c: 创建一个新窗口,状态栏会显示多个窗口的信息。Ctrl + b p: 切换到上一个窗口(按照状态栏上的顺序)Ctrl + b n: 切换到下一个窗口。Ctrl + b <number>: 切换到指定编号的窗口,其中的<number>是状态栏上的窗口编号。Ctrl + b w: 从列表中选择窗口。Ctrl + b ,: 窗口重命名。
# 窗格(panel)
tmux split-window: 划分上下两个窗格tmux split-window -h: 划分左右两个窗格tmux select-pane: 移动光标- 交换窗格位置
tmux swap-pane -U: 当前窗格上移tmux swap-pane -D: 当前窗格下移
- 快捷键
Ctrl + b %: 左右分屏Ctrl + b ": 上下分屏Ctrl + d或exit: 关闭当前窗格- 当一个窗口里最后一个窗格被关掉时,这个窗口也会被关掉。
- 当一个会话里最后一个窗口被关掉时,这个会话也会被关掉
Ctrl + b z: 在当前网格与最大化当前网格切换Ctrl + b o: 在窗格间切换焦点
# 配置文件
使用 tmux source ~/.tmux.conf 生效
# 开启鼠标全能支持(点击、滚动、拖拽)
set -g mouse on
# 支持滚轮滚动
set -g history-limit 50000
# 启用256色
set -g default-terminal "screen-256color"
# 窗口从1开始编号(更顺手)
set -g base-index 1
set -g pane-base-index 1
# 快速重载配置:Ctrl+b r
bind r source-file ~/.tmux.conf \; display "Config Reloaded!"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 其他命令
tmux list-keys: 列出所有快捷键,及其对应的 Tmux 命令tmux list-commands: 列出所有 Tmux 命令及其参数tmux info: 列出当前所有 Tmux 会话的信息tmux source-file ~/.tmux.conf: 重新加载当前的 Tmux 配置
# link
上次更新: 2026/04/01, 00:16:44