📌 为什么选tmux
tmux(Terminal Multiplexer)是一个终端复用工具,它允许你在单个终端窗口中创建多个虚拟终端会话,并能保持这些会话在后台运行。与直接使用终端相比,tmux 提供了更强大的会话管理功能。
核心优势:
-
会话持久化:即使网络断开,会话仍保留在服务器上
-
多窗口/面板管理:高效组织多个工作环境
-
会话共享:多个用户可以同时连接同一个会话
📌 ubuntu安装tmux
sudo apt-get install tmux
📌 基本概念
会话(Session)
tmux 会话是一个独立的运行环境,可以包含多个窗口。即使断开连接,会话也会继续在后台运行。
窗口(Window)
每个会话可以包含多个窗口,类似于浏览器中的标签页。
面板(Pane)
每个窗口可以分割成多个面板,允许同时查看和操作多个终端。
📌 常用命令与快捷键
tmux 的所有操作都需要先按下前缀键(默认是 Ctrl+b),然后输入命令键。
会话管理
| 命令/快捷键 | 说明 |
tmux new -s <name> |
创建名为 name 的新会话 |
Ctrl+b d |
分离当前会话(会话继续后台运行) |
tmux ls |
列出所有会话 |
tmux attach -t <name> |
重新连接到指定会话 |
Ctrl+b $ |
重命名当前会话 |
Ctrl+b s |
切换会话 |
窗口管理
| 命令/快捷键 | 说明 |
Ctrl+b c |
创建新窗口 |
Ctrl+b & |
关闭当前窗口 |
Ctrl+b n |
切换到下一个窗口 |
Ctrl+b p |
切换到上一个窗口 |
Ctrl+b <number> |
切换到指定编号的窗口 |
Ctrl+b , |
重命名当前窗口 |
面板管理
| 命令/快捷键 | 说明 |
Ctrl+b % |
垂直分割当前面板 |
Ctrl+b " |
水平分割当前面板 |
Ctrl+b <arrow> |
在面板间移动焦点 |
Ctrl+b x |
关闭当前面板 |
Ctrl+b z |
最大化/恢复当前面板 |
Ctrl+b Space |
切换面板布局 |
📌 实用技巧
1. 会话恢复
用 tmux-resurrect 插件可以保存 tmux 会话中的窗口和命令,即使服务器重启,也可以恢复 tmux 会话。
1.1. 安装插件管理器 tpm
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
1.2. 编辑 ~/.tmux.conf,加入插件
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
# 启动 TPM
run '~/.tmux/plugins/tpm/tpm'
1.3. 在 tmux 内按
prefix + I(默认 prefix 是 Ctrl+b)安装插件
1.4. 使用
-
保存会话:
prefix + Ctrl-s -
恢复会话:
prefix + Ctrl-r -
查看已保存的会话:
cat ~/.local/share/tmux/resurrect/last
注意:
tmux-resurrect保存的是命令和布局,不会保存命令执行的内存状态(比如一个正在跑的 Python 程序不会中途接着跑)。
2. 交换左右面板位置
2.1. 先看当前面板编号
在 tmux 内执行:
tmux list-panes
会输出类似:
0: [80x24] [history 0/2000, 0 bytes] %0 (active)
1: [80x24] [history 0/2000, 0 bytes] %1
这里 %0 和 %1 就是两个面板的 ID。
2.2. 交换两个面板
例如交换 %0 和 %1:
tmux swap-pane -s 0 -t 1
2.3. 快捷方式(更方便)
tmux 内置了快捷键:
-
交换当前面板和下一个面板
Ctrl+b { # 当前面板和上一个面板交换 Ctrl+b } # 当前面板和下一个面板交换对左右分割和上下分割都有效。
3. 复制模式
-
Ctrl+b [进入复制模式 -
使用方向键移动光标
-
空格开始选择,回车复制
-
Ctrl+b ]粘贴
4. 同步输入
在多面板中同时输入相同命令:
示例
# 进入同步模式
Ctrl+b :setw synchronize-panes on
# 关闭同步模式
Ctrl+b :setw synchronize-panes off
5. 快速创建开发环境
示例
# 创建一个包含3个面板的开发会话
tmux new -s dev -d
tmux send-keys -t dev:0 "vim" C-m
tmux split-window -h -t dev:0
tmux split-window -v -t dev:0.1
tmux attach -t dev
📁 附言
修改配置后使其立即生效:tmux source-file ~/.tmux.conf