tmux 终端复用神器:常用命令与配置详解

次浏览

什么是 tmux?

tmux(Terminal Multiplexer)是一个终端复用工具,它允许你在一个终端窗口中管理多个会话、窗口和窗格。最强大的功能是:即使你断开 SSH 连接,tmux 会话中的程序仍然在后台运行,下次重新连接时可以恢复工作现场。

核心优势

  • 会话持久化:断开连接后程序继续运行
  • 分屏功能:一个窗口分成多个窗格
  • 多窗口管理:像浏览器标签页一样管理多个终端
  • 跨平台同步:多人协作时可以共享同一个终端会话

安装 tmux

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Ubuntu/Debian
sudo apt install tmux

# CentOS/RHEL
sudo yum install tmux

# macOS
brew install tmux

# Arch Linux
sudo pacman -S tmux

核心概念

tmux 采用三层结构:

1
2
3
Session(会话)
  └── Window(窗口)
        └── Pane(窗格)
  • Session(会话):最顶层的容器,可以持久化保存
  • Window(窗口):类似浏览器标签页,每个会话可以有多个窗口
  • Pane(窗格):一个窗口可以分成多个窗格,实现分屏

常用命令

会话管理(Session)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 创建新会话
tmux                      # 创建无名会话
tmux new -s work          # 创建名为 work 的会话

# 列出所有会话
tmux ls
tmux list-sessions

# 连接到会话
tmux attach              # 连接到最近使用的会话
tmux attach -t work      # 连接到指定会话
tmux a -t work           # 简写形式

# 分离当前会话(快捷键)
prefix + d               # prefix 默认是 Ctrl+b

# 杀死会话
tmux kill-session -t work     # 杀死指定会话
tmux kill-server              # 杀死所有会话

# 重命名会话
tmux rename-session -t old_name new_name

窗口管理(Window)

快捷键 说明
prefix + c 创建新窗口
prefix + n 切换到下一个窗口
prefix + p 切换到上一个窗口
prefix + 数字 切换到指定编号的窗口
prefix + w 以列表形式选择窗口
prefix + , 重命名当前窗口
prefix + & 关闭当前窗口
prefix + f 按名称查找窗口

窗格管理(Pane)

快捷键 说明
prefix + % 垂直分割(左右分屏)
prefix + " 水平分割(上下分屏)
prefix + 方向键 切换窗格
prefix + o 切换到下一个窗格
prefix + x 关闭当前窗格
prefix + z 最大化/还原当前窗格
prefix + q 显示窗格编号
prefix + space 切换窗格布局
prefix + { 与上一个窗格交换位置
prefix + } 与下一个窗格交换位置

窗格大小调整

1
2
3
# 按住 prefix 不放,连续按方向键调整大小
prefix + Ctrl+方向键       # 微调
prefix + Alt+方向键        # 大幅调整

复制模式

在 tmux 中复制文本需要进入复制模式:

快捷键 说明
prefix + [ 进入复制模式
q 退出复制模式
v 开始选择(vi 模式)
y 复制选中内容
prefix + ] 粘贴内容

配置文件

tmux 的配置文件位于 ~/.tmux.conf,以下是推荐的配置:

 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# ============================================
# 基础设置
# ============================================
# 设置终端颜色支持
set -g default-terminal "screen-256color"

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

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

# 设置窗口编号从 1 开始(0 在键盘太远)
set -g base-index 1
setw -g pane-base-index 1

# 关闭窗口后自动重新编号
set -g renumber-windows on

# 减少按键延迟
set -s escape-time 0

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

# ============================================
# 快捷键绑定
# ============================================
# 修改前缀键为 Ctrl+a(可选,默认 Ctrl+b)
# set -g prefix C-a
# unbind C-b
# bind C-a send-prefix

# 重新映射分屏快捷键(更直观)
bind | split-window -h -c "#{pane_current_path}"    # | 垂直分屏
bind - split-window -v -c "#{pane_current_path}"    # - 水平分屏

# 使用 vim 风格的方向键切换窗格
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

# 快速重载配置文件
bind r source-file ~/.tmux.conf \; display "配置已重载!"

# 新窗口保持当前路径
bind c new-window -c "#{pane_current_path}"

# ============================================
# 外观美化
# ============================================
# 状态栏位置(bottom/top)
set -g status-position bottom

# 状态栏背景色
set -g status-style bg=black,fg=white

# 左侧状态栏
set -g status-left " #[fg=green]#S #[fg=yellow]#I:#P"
set -g status-left-length 30

# 右侧状态栏(显示时间)
set -g status-right "#[fg=cyan]%Y-%m-%d #[fg=white]%H:%M "

# 当前窗口状态栏高亮
setw -g window-status-current-style bg=green,fg=black,bold

# 窗格边框样式
set -g pane-border-style fg=colour238
set -g pane-active-border-style fg=green

# 窗格编号显示时间(ms)
set -g display-panes-time 2000

# 消息样式
set -g message-style bg=black,fg=yellow

# ============================================
# 插件管理(需要 TPM)
# ============================================
# 插件列表
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'    # 自动保存
set -g @plugin 'dracula/tmux'                   # Dracula 主题

# resurrect 配置
set -g @resurrect-capture-pane-contents 'on'

# continuum 配置(自动保存间隔,分钟)
set -g @continuum-restore 'on'
set -g @continuum-save-interval '15'

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

插件管理(TPM)

安装 TPM(Tmux Plugin Manager)

1
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

安装完成后:

  1. 将配置写入 ~/.tmux.conf
  2. 启动 tmux
  3. prefix + I(大写)安装插件

推荐插件

插件 说明
tmux-resurrect 保存和恢复 tmux 会话
tmux-continuum 自动保存会话(配合 resurrect)
tmux-yank 增强复制功能
tmux-open 在浏览器中打开选中链接
dracula/tmux Dracula 主题

实用技巧

1. 保持 SSH 会话

1
2
3
4
5
# 在服务器上创建会话
tmux new -s remote_work

# 断开后重新连接
tmux attach -t remote_work

2. 同时操作多个窗格

1
2
3
4
5
# 开启同步输入(所有窗格同时输入相同内容)
prefix + :setw synchronize-panes on

# 关闭同步
prefix + :setw synchronize-panes off

3. 快速布局切换

prefix + space 可以在预设布局之间切换:

  • even-horizontal(水平均分)
  • even-vertical(垂直均分)
  • main-horizontal(主窗格在上)
  • main-vertical(主窗格在左)
  • tiled(平铺)

4. 命令行脚本化

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
#!/bin/bash
# 创建开发环境脚本

tmux new-session -d -s dev

# 创建窗口并分割
tmux rename-window -t dev:0 'editor'
tmux send-keys -t dev:0 'vim .' C-m

tmux new-window -t dev -n 'server'
tmux send-keys -t dev:server 'npm run dev' C-m

tmux new-window -t dev -n 'git'
tmux send-keys -t dev:git 'git status' C-m

# 连接到会话
tmux attach -t dev

5. 会话共享

1
2
3
4
5
# 用户 A 创建共享会话
tmux new -s shared_session

# 用户 B 加入(需要相同用户或权限)
tmux attach -t shared_session

常用命令速查表

会话操作

命令 说明
tmux new -s name 创建命名会话
tmux ls 列出所有会话
tmux a -t name 连接到会话
tmux kill-session -t name 删除会话
prefix + d 分离当前会话
prefix + s 列出会话并切换

窗口操作

快捷键 说明
prefix + c 新建窗口
prefix + n/p 下/上一个窗口
prefix + 数字 切换到指定窗口
prefix + , 重命名窗口
prefix + & 关闭窗口

窗格操作

快捷键 说明
prefix + % 垂直分屏
prefix + " 水平分屏
prefix + 方向键 切换窗格
prefix + x 关闭窗格
prefix + z 最大化窗格
prefix + q 显示窗格编号

总结

tmux 是终端用户的必备工具,掌握它可以让你的工作效率倍增:

  1. 会话持久化:远程工作不怕断线
  2. 分屏功能:一个窗口搞定所有终端操作
  3. 脚本化:一键恢复开发环境
  4. 可定制:丰富的配置和插件生态

开始使用 tmux 吧,你会发现再也离不开它!


📌 提示:建议把常用快捷键打印出来贴在显示器旁边,多练习几次就能形成肌肉记忆。

使用 Hugo 构建
主题 StackJimmy 设计