Tmux分屏神器-终端效率翻倍

一、为什么需要Tmux?

Tmux(Terminal Multiplexer)是一个终端复用器,可以在一个终端窗口中运行多个会话、窗口和窗格。

1.1 Tmux能做什么?

1
2
3
4
5
6
7
8
9
10
11
┌─────────────────────────────────────────────────────────────────┐
│ Tmux使用场景 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 🔸 同时运行多个程序 → 服务器管理 │
│ 🔸 分屏操作 → 边写代码边看结果 │
│ 🔸 保持后台运行 → 关闭终端session不中断 │
│ 🔸 会话共享 → 多人协作演示 │
│ 🔸 终端复用 → 一个终端管理多个任务 │
│ │
└─────────────────────────────────────────────────────────────────┘

1.2 核心概念

概念 说明
Session(会话) 一个完整的任务单位,可以包含多个窗口
Window(窗口) 对应一个终端屏幕,类似浏览器的标签页
Pane(窗格) 窗口内分割的子屏幕
Prefix(前缀键) 默认 Ctrl+b,所有Tmux命令的前缀

二、安装Tmux

2.1 Ubuntu/Debian

1
2
sudo apt update
sudo apt install -y tmux

2.2 macOS

1
2
3
4
5
# 使用Homebrew
brew install tmux

# 或使用MacPorts
sudo port install tmux

2.3 验证安装

1
2
tmux -V
# tmux 3.3a

三、基础操作

3.1 启动与退出

1
2
3
4
5
6
7
8
9
10
11
12
# 启动Tmux
tmux

# 启动指定名称的会话
tmux new -s mysession

# 退出Tmux(不杀死会话)
# 在Tmux内输入
exit

# 分离会话(回到父终端)
# 按 Ctrl+b 然后按 d

3.2 会话管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 列出所有会话
tmux ls

# 重新连接会话
tmux attach -t mysession

# 简写
tmux a -t mysession

# 杀死会话
tmux kill-session -t mysession

# 分离其他客户端
tmux detach-client -t mysession

3.3 窗口操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 创建新窗口
Ctrl+b c

# 切换窗口
Ctrl+b 0-9 # 切换到第0-9号窗口
Ctrl+b n # 下一个窗口
Ctrl+b p # 上一个窗口
Ctrl+b l # 上一个活跃的窗口
Ctrl+b w # 列出所有窗口并选择

# 重命名窗口
Ctrl+b ,

# 关闭窗口
Ctrl+b &

3.4 窗格操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 垂直分屏(左右)
Ctrl+b %

# 水平分屏(上下)
Ctrl+b "

# 切换窗格
Ctrl+b 方向键 # 切换到指定方向的窗格
Ctrl+b o # 切换到下一个窗格
Ctrl+b ; # 切换到上一个活跃的窗格

# 调整窗格大小
Ctrl+b Alt+方向键 # 每次调整1行
Ctrl+b : resize-pane -U 5 # 向上调整5行

# 最大化/还原窗格
Ctrl+b z # 最大化当前窗格,再按恢复

# 交换窗格位置
Ctrl+b { # 将当前窗格与上一个交换
Ctrl+b } # 将当前窗格与下一个交换

# 关闭窗格
Ctrl+b x # 确认关闭
Ctrl+b d # 直接关闭(不确认)

四、复制模式

4.1 进入复制模式

1
2
3
4
5
# 进入复制模式
Ctrl+b [

# 退出复制模式
q

4.2 复制操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 移动光标
方向键 或 h/j/k/l

# 跳转到行首/行尾
0 或 ^
$

# 跳转到页面开头/结尾
g / G

# 搜索
/ 向下搜索
? 向上搜索
n / N 下一个/上一个匹配

# 开始复制
Space # 开始选择
Enter # 复制选中的内容

# 粘贴
Ctrl+b ] # 粘贴

五、配置文件

5.1 创建配置文件

1
2
# 创建配置文件
touch ~/.tmux.conf

5.2 常用配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# ~/.tmux.conf

# ====== 通用设置 ======
# 设置前缀键为 Ctrl+a(更方便)
set -g prefix C-a
unbind C-b

# 启用鼠标支持
set -g mouse on

# 启用256色
set -g default-terminal "screen-256color"

# 设置历史记录行数
set -g history-limit 50000

# 启用UTF-8支持
set -g utf8 on

# ====== 状态栏设置 ======
# 状态栏更新间隔(秒)
set -g status-interval 1

# 状态栏位置
set -g status-position top

# 左边内容
set -g status-left-length 40
set -g status-left "#[fg=green]Session: #S #[fg=yellow]Window: #I #[fg=cyan]Pane: #P"

# 右边内容
set -g status-right-length 40
set -g status-right "#[fg=cyan]%Y-%m-%d %H:%M"

# 窗口状态
setw -g window-status-format " #I: #W "
setw --format " #I: #W "

# =====g window-status-current= 窗格设置 ======
# 窗格边框颜色
set -g pane-border-fg colour235
set -g pane-border-bg colour235
set -g pane-active-border-fg colour39
set -g pane-active-border-bg colour39

# 消息显示时间(毫秒)
set -g display-time 2000

# ====== 快捷键设置 ======
# 重新加载配置
bind r source-file ~/.tmux.conf \; display "Config reloaded!"

# 分屏快捷键
bind | split-window -h
bind - split-window -v

# 使用vi模式
setw -g mode-keys vi

# 更快的响应
set -g escape-time 0

# 窗口自动重编号
set -g renumber-windows on

5.3 加载配置

1
2
3
4
5
# 重新加载配置
tmux source-file ~/.tmux.conf

# 或在Tmux内
Ctrl+b : source-file ~/.tmux.conf

六、实用技巧

6.1 快速分屏布局

1
2
3
4
5
6
7
8
# 均匀分布
Ctrl+b M-1 # 水平均匀分布
Ctrl+b M-2 # 垂直均匀分布
Ctrl+b M-3 # 主窗格在上
Ctrl+b M-4 # 主窗格在左

# 预设布局
Ctrl+b Alt+1-5 # 切换到预设布局

6.2 同步输入

1
2
3
4
5
# 开启同步输入(同时在所有窗格输入命令)
Ctrl+b : setw synchronize-panes on

# 关闭
Ctrl+b : setw synchronize-panes off

6.3 会话共享(协作)

1
2
3
4
5
6
7
8
# 创建可共享的会话
tmux new -s sharedsession

# 其他人加入(需要同一台机器或有权限访问)
tmux attach -t sharedsession

# 查看所有客户端
tmux list-clients

6.4 快速搜索

1
2
3
4
5
6
7
8
# 在所有窗口中搜索内容
Ctrl+b f # 查找窗口

# 复制模式内搜索
/ 向下搜索
? 向上搜索
n 下一个
N 上一个

七、插件管理(TPM)

7.1 安装TPM

1
2
# 克隆TPM仓库
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

7.2 常用插件

1
2
3
4
5
6
7
8
9
# ~/.tmux.conf 添加
# 插件列表
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect' # 会话恢复
set -g @plugin 'tmux-plugins/tmux-continuum' # 自动恢复

# 初始化TPM(必须放最后)
run '~/.tmux/plugins/tpm/tpm'

7.3 插件操作

1
2
3
4
5
6
7
8
# 安装插件
Ctrl+b I

# 更新插件
Ctrl+b U

# 卸载插件(从配置中移除后)
Ctrl+b Alt+u

八、实战案例

8.1 开发环境

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
┌─────────────────────────────────────────────────────────────┐
│ 项目开发布局 │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┬───────────────────────────────────┐ │
│ │ 代码编辑 │ 测试/预览 │ │
│ │ (vim/VSCode) │ (npm run dev) │ │
│ ├─────────────────┼───────────────────────────────────┤ │
│ │ Git操作 │ 服务日志 │ │
│ │ (git status) │ (tail -f logs) │ │
│ └─────────────────┴───────────────────────────────────┘ │
│ │
│ 会话名: project-dev │
│ 窗口1: frontend (前端开发) │
│ 窗口2: backend (后端服务) │
│ 窗口3: database (数据库) │
└─────────────────────────────────────────────────────────────┘

8.2 服务器运维

1
2
3
4
5
6
7
8
┌─────────────────────────────────────────────────────────────┐
│ 服务器运维布局 │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────┬─────────────┬─────────────────────────────┐│
│ │ 系统监控 │ 日志查看 │ SSH连接 ││
│ │ (htop) │ (tail -f) │ (ssh user@host) ││
│ └─────────────┴─────────────┴─────────────────────────────┘│
└─────────────────────────────────────────────────────────────┘

8.3 快速启动脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash
# start-dev.sh

# 创建开发会话
tmux new-session -d -s dev

# 窗口1: 前端
tmux send-keys -t dev 'cd ~/project/frontend' Enter
tmux send-keys -t dev 'npm run dev' Enter
tmux split-window -h -t dev

# 窗口2: 后端
tmux new-window -t dev -n backend
tmux send-keys -t dev:backend 'cd ~/project/backend' Enter
tmux send-keys -t dev:backend 'python manage.py runserver' Enter
tmux split-window -v -t dev:backend

# 选择起始窗口
tmux select-window -t dev:1
tmux select-pane -t dev:1

# 连接会话
tmux attach-session -t dev

九、常用命令速查

9.1 会话命令

命令 说明
tmux new -s name 创建命名会话
tmux ls 列出所有会话
tmux a -t name 连接会话
tmux kill-session -t name 杀死会话
tmux rename-session -t old new 重命名会话

9.2 窗口命令

快捷键 说明
Ctrl+b c 创建新窗口
Ctrl+b , 重命名窗口
Ctrl+b & 关闭窗口
Ctrl+b 0-9 切换窗口
Ctrl+b n/p 下/上一个窗口
Ctrl+b w 列出窗口

9.3 窗格命令

快捷键 说明
Ctrl+b % 垂直分屏
Ctrl+b " 水平分屏
Ctrl+b 方向键 切换窗格
Ctrl+b x 关闭窗格
Ctrl+b z 最大化/还原
Ctrl+b { / } 交换窗格

9.4 其他命令

快捷键 说明
Ctrl+b [ 进入复制模式
Ctrl+b ] 粘贴
Ctrl+b d 分离会话
Ctrl+b ? 查看所有快捷键
Ctrl+b : 命令行模式

十、与SSH配合

10.1 保持SSH会话

1
2
3
4
5
6
7
8
9
10
# SSH远程服务器后启动tmux
ssh user@server
tmux new -s mywork

# 断开连接
Ctrl+b d

# 重新连接
ssh user@server
tmux a -t mywork

10.2 本地Tmux + SSH

1
2
3
4
5
# 本地Tmux中SSH到多台服务器
# 分屏后分别SSH到不同服务器
ssh user1@server1
Ctrl+b % # 分屏
ssh user2@server2

十一、常见问题

11.1 鼠标支持

1
2
3
4
5
# 启用鼠标
set -g mouse on

# 复制模式用鼠标选择
# 按住Shift键可以选中

11.2 颜色显示

1
2
3
4
5
# 如果颜色显示不正常
set -g default-terminal "screen-256color"

# 或
set -g default-terminal "xterm-256color"

11.3 快捷键冲突

1
2
3
# 如果Ctrl+a被其他程序占用
# 可以改用Ctrl+g或其他
set -g prefix C-g

十二、替代方案

工具 特点
Tmux 功能强大,跨平台
screen 更老更简单
iTerm2 (macOS) 内置分屏功能
Windows Terminal Windows原生

参考资料


持续更新中…欢迎收藏!

#Tmux #终端 #分屏 #效率 #工具


Tmux分屏神器-终端效率翻倍
https://r0f2.my/post/26-tmux-terminal-multiplexer/
作者
JA
发布于
2026年2月13日
许可协议