一、基础概念
1.1 什么是tmux?
tmux(terminal multiplexer)是一个终端复用器,允许用户在单个终端窗口中运行和管理多个终端会话。它的核心价值在于:
会话持久化:
即使终端关闭,程序依然在后台运行
多窗口管理:
在单个终端中管理多个工作区
窗格分割:
灵活地分割终端窗口
会话共享:
支持多人协作同一会话
1.2 核心架构
tmux采用三层架构设计:
会话(Session):
最顶层单位,可包含多个窗口
窗口(Window):
类似浏览器的标签页,每个会话可有多个窗口
窗格(Pane):
窗口内的分割区域,每个窗格是一个独立终端
二、安装配置
2.1 安装tmux
# Ubuntu/Debian
sudo apt-get install tmux
# CentOS/RHEL
sudo yum install tmux
# macOS
brew install tmux
2.2 基础配置
创建配置文件:~/.tmux.conf
# 基础配置示例
# 修改前缀键为Ctrl+a
set -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-bg black
set -g status-fg white
三、基础操作指南
3.1 会话管理
# 创建新会话
tmux new-session -s dev # 创建名为"dev"的会话
tmux new-session # 创建默认编号的会话
# 列出所有会话
tmux list-sessions
# 接入会话
tmux attach-session -t dev # 接入名为"dev"的会话
tmux attach-session # 接入最近的会话
# 分离当前会话
# 在tmux中使用快捷键:Ctrl+b d
# 关闭会话
tmux kill-session -t dev # 关闭指定会话
tmux kill-server # 关闭所有会话
3.2 窗口操作
在tmux会话中使用以下快捷键(先按Ctrl+b):
c # 创建新窗口
, # 重命名当前窗口
n # 切换到下一个窗口
p # 切换到上一个窗口
w # 列出所有窗口
& # 关闭当前窗口
0-9 # 切换到指定编号的窗口
3.3 窗格操作
在tmux会话中使用以下快捷键(先按Ctrl+b):
% # 垂直分割窗格
" # 水平分割窗格
o # 切换到下一个窗格
; # 切换到上一个窗格
x # 关闭当前窗格
空格 # 切换窗格布局
四、实战应用场景
4.1 开发环境配置
# 创建开发环境会话
tmux new-session -s development
# 分割窗口用于编辑器和终端
# 在tmux中按Ctrl+b %进行垂直分割
# 左侧运行编辑器
vim .
# 在右侧窗格运行服务器
npm start
# 创建新窗口用于Git操作
# 按Ctrl+b c创建新窗口
git status
4.2 服务器监控
# 创建监控会话
tmux new-session -s monitoring
# 分割窗口监控不同指标
# 上方窗格:系统负载
top
# 下方窗格:日志监控
tail -f /var/log/syslog
# 新窗口:网络监控
htop
4.3 数据处理
# 创建数据处理会话
tmux new-session -s data-processing
# 主窗口运行数据处理脚本
python process_data.py
# 新窗口监控资源使用
nvidia-smi # GPU监控
五、高级功能
5.1 会话共享
# 创建共享会话
tmux new-session -s shared
# 其他用户加入
tmux attach-session -t shared
5.2 会话操作
# 重命名会话
tmux rename-session -t old_name new_name
# 切换会话
tmux switch-client -t session_name
# 发送命令到指定会话
tmux send-keys -t session_name 'ls' C-m
5.3 窗口管理
# 移动窗口
tmux move-window -s src_session:2 -t dst_session:1
# 交换窗口位置
tmux swap-window -s 2 -t 1
六、常用命令速查表
6.1 会话命令
tmux new-session -s name # 创建新会话
tmux list-sessions # 列出所有会话
tmux attach-session -t name # 连接会话
tmux kill-session -t name # 关闭会话
tmux rename-session -t old new # 重命名会话
6.2 窗口命令
tmux new-window -n name # 创建新窗口
tmux list-windows # 列出所有窗口
tmux select-window -t :0 # 选择窗口
tmux rename-window name # 重命名窗口
6.3 窗格命令
tmux split-window -h # 水平分割
tmux split-window -v # 垂直分割
tmux select-pane -t 0 # 选择窗格
tmux resize-pane -D 10 # 调整窗格大小
七、进阶配置示例
7.1 状态栏配置
# ~/.tmux.conf
# 自定义状态栏
set -g status-interval 1
set -g status-justify centre
set -g status-left-length 20
set -g status-right-length 140
set -g status-left '#[fg=green]#H #[fg=black]• #[fg=green,bright]#(uname -r | cut -c 1-6)#[default]'
set -g status-right '#[fg=green,bg=default,bright]#(tmux-mem-cpu-load) #[fg=red,dim,bg=default]#(uptime | cut -f 4-5 -d " " | cut -f 1 -d ",") #[fg=white,bg=default]%a%l:%M:%S %p#[default] #[fg=blue]%Y-%m-%d'
7.2 快捷键配置
# ~/.tmux.conf
# 自定义快捷键
bind-key C-a last-window
bind-key | split-window -h
bind-key - split-window -v
bind-key h select-pane -L
bind-key j select-pane -D
bind-key k select-pane -U
bind-key l select-pane -R