tmux 是一款开源的终端复用工具,专为提升命令行工作效率设计。它允许用户在单个终端窗口中创建多个会话(Session)、窗口(Window)和窗格(Pane),实现多任务并行操作。通过分屏功能,开发者可同时编辑代码、运行服务、查看日志;会话的持久化特性确保SSH断连后任务不中断,随时恢复工作现场。支持快捷键快速切换布局、复制粘贴文本,还可共享会话实现协作开发。其高度可定制性(如修改前缀键、美化状态栏)和自动化脚本能力,使其成为运维、编程及远程工作的效率利器。无论是管理服务器集群,还是本地复杂工作流,tmux 都能让终端操作如行云流水,彻底告别窗口切换的繁琐。
一、安装与配置
1.1 安装方法
- Ubuntu/Debian:
sudo apt install tmux - CentOS/Fedora:
sudo yum install tmux - macOS:
brew install tmux
1.2 配置文件
编辑~/.tmux.conf实现个性化配置:
Bash# 修改前缀键为Ctrl+a(默认Ctrl+b) set-option -g prefix C-a unbind C-b bind C-a send-prefix # 启用鼠标支持(支持窗格选择/调整大小) set -g mouse on # 设置窗口序号从1开始 set -g base-index 1 # 状态栏配置 set -g status-right "#(date +%H:%M)" # 右侧显示时间[1](@ref)[6](@ref)
加载配置:tmux source-file ~/.tmux.conf
二、核心概念
Tmux采用三级结构管理终端:
- 1.会话(Session) :最高层级,可包含多个窗口
- 2.窗口(Window) :类似浏览器标签页,可分割为多个窗格
- 3.窗格(Pane) :窗口内的子终端,支持并行操作
三、会话管理
3.1 基础操作
| 功能 | 命令/快捷键 | 说明 |
|---|---|---|
| 新建命名会话 | tmux new -s <会话名> | 237 |
| 分离当前会话 | Ctrl+a d 或 tmux detach | 159 |
| 查看会话列表 | tmux ls | 359 |
| 接入指定会话 | tmux attach -t <会话名> | 357 |
| 终止会话 | tmux kill-session -t <会话名> | 3510 |
3.2 高级功能
- 会话切换:
Ctrl+a s显示会话列表 - 重命名会话:
Ctrl+a $ - 持久化会话:分离后保持后台运行,适合远程任务
四、窗口管理
| 功能 | 快捷键 | 等效命令 |
|---|---|---|
| 新建窗口 | Ctrl+a c | tmux new-window |
| 切换窗口 | Ctrl+a <数字> | tmux select-window |
| 重命名窗口 | Ctrl+a , | tmux rename-window |
| 关闭当前窗口 | Ctrl+a & | tmux kill-window |
| 窗口列表 | Ctrl+a w | - |
五、窗格操作
5.1 基础分割
| 分割方式 | 快捷键 | 等效命令 |
|---|---|---|
| 水平分割 | Ctrl+a " | tmux split-window |
| 垂直分割 | Ctrl+a % | tmux split-window -h |
5.2 导航与调整
| 操作 | 快捷键 |
|---|---|
| 切换窗格 | Ctrl+a 方向键 |
| 全屏当前窗格 | Ctrl+a z |
| 关闭当前窗格 | Ctrl+d 或 Ctrl+a x |
| 调整窗格大小 | Ctrl+a Ctrl+方向键(微调) |
Ctrl+a Alt+方向键(5单位) |
5.3 高级功能
-
布局切换:
Ctrl+a Space循环切换预设布局 -
窗格编号显示:
Ctrl+a q -
内容复制:
- 1.
Ctrl+a [进入复制模式 - 2.选择文本后按
Enter复制 - 3.
Ctrl+a ]粘贴8
- 1.
六、实用技巧
6.1 远程工作流
Bash# SSH连接后启动tmux tmux new -s remote_work # 网络中断后重新连接 tmux attach -t remote_work
(支持任务持续运行,避免断连中断)
6.2 协作编程
- 共享会话:
tmux -S /tmp/pair_programming创建共享socket文件 - 实时同步:多个用户可同时连接同一会话7
6.3 脚本化操作
Bash# 创建带命名窗口的会话 tmux new -s dev -n code_window tmux send-keys -t dev:code_window "vim main.py" Enter
七、常见问题
Q:如何恢复意外关闭的会话?
A:通过tmux-resurrect插件可保存/恢复会话状态(需额外安装)
Q:鼠标滚动不生效?
A:确认配置包含set -g mouse on并重新加载
Q:如何批量管理多个服务器?
A:结合ClusterSSH工具与tmux同步窗格功能实现
