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 里的程序依然在运行,重新连接后一切如初。