tmux 是一个终端复用器,允许你在一个终端窗口中管理多个会话,在远程服务器上尤其实用。

基础概念

tmux 有三个层级:

tmux
├── Session(会话)  # 一组窗口
│   ├── Window(窗口) # 一个标签页
│   │   └── Pane(面板) # 一个分屏区域

会话管理

# 创建新会话
tmux new -s myproject

# 分离会话(Ctrl-b d)
# 回到终端后再次接入:
tmux attach -t myproject

# 列出会话
tmux ls

# 重命名会话
tmux rename-session -t myproject newname

# 杀死会话
tmux kill-session -t myproject

常用快捷键

默认前缀键是 Ctrl-b,以下操作均在前缀键之后:

窗口操作

快捷键 功能
c 创建新窗口
, 重命名当前窗口
n / p 切换到下一个/上一个窗口
0-9 切换到指定编号的窗口
& 关闭当前窗口

面板操作

快捷键 功能
% 垂直分屏
" 水平分屏
方向键 切换面板
Ctrl-方向键 调整面板大小
x 关闭当前面板
! 将面板提升为新窗口

其他

快捷键 功能
d 分离会话
s 交互式会话选择
? 查看所有快捷键
: 进入命令行模式

自定义配置

~/.tmux.conf 示例:

# 修改前缀键为 Ctrl-a(与 screen 一致)
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# 启用鼠标支持(tmux 2.1+)
set -g mouse on

# 修改分屏键为更直观的方式
bind | split-window -h
bind - split-window -v

# 重新加载配置
bind r source-file ~/.tmux.conf \; display "Reloaded!"

# 设置终端颜色
set -g default-terminal "screen-256color"

# 状态栏美化
set -g status-bg colour235
set -g status-fg white
set -g status-left '#[fg=green]#S '
set -g status-right '#[fg=yellow]%Y-%m-%d %H:%M'

复制模式

# 进入复制模式
Ctrl-b [

# 移动光标到起始位置,按 Space 开始选择
# 移动到结束位置,按 Enter 复制
# 粘贴
Ctrl-b ]

tmux 最大的价值在于:即使你通过 SSH 断开连接,tmux 里的程序依然在运行,重新连接后一切如初。