一、为什么需要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
| brew install tmux
sudo port install tmux
|
2.3 验证安装
三、基础操作
3.1 启动与退出
1 2 3 4 5 6 7 8 9 10 11 12
| tmux
tmux new -s mysession
exit
|
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 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 进入复制模式
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 创建配置文件
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
|
set -g prefix C-a unbind C-b
set -g mouse on
set -g default-terminal "screen-256color"
set -g history-limit 50000
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 "
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
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
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
| git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
|
7.2 常用插件
1 2 3 4 5 6 7 8 9
|
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'
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
tmux new-session -d -s dev
tmux send-keys -t dev 'cd ~/project/frontend' Enter tmux send-keys -t dev 'npm run dev' Enter tmux split-window -h -t dev
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 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
|
ssh user1@server1 Ctrl+b % ssh user2@server2
|
十一、常见问题
11.1 鼠标支持
11.2 颜色显示
1 2 3 4 5
| set -g default-terminal "screen-256color"
set -g default-terminal "xterm-256color"
|
11.3 快捷键冲突
十二、替代方案
| 工具 |
特点 |
| Tmux |
功能强大,跨平台 |
| screen |
更老更简单 |
| iTerm2 (macOS) |
内置分屏功能 |
| Windows Terminal |
Windows原生 |
参考资料
持续更新中…欢迎收藏!
#Tmux #终端 #分屏 #效率 #工具