Tmux Guideline

专业术语

在讲解 tmux 之前,让我们先来熟悉几个名词。

  • 会话(session)
    当我们在终端中执行一个任务时,窗口一旦关闭,会话随之结束,其中运行的进程也就被强制终止了。
    我们可以使用 tmux 将窗口与会话解绑。
  • 窗口(window)
    窗口就是我们所看到的整个终端界面。
  • 窗格(pane)
    窗口可以划分为多个窗格,可以根据需要垂直排列或水平排列。

前缀键(send-prefix)

tmux 中的很多操作都是通过前缀键+快捷键来实现的。用户也可以根据自己需要在~/.tmux.conf配置文件中修改前缀键。

会话操作

tmux外部指令

1
2
3
4
tmux [new -s <session-name>] # 新建会话
tmux ls # 查看会话
tmux attach [-t <session-name>] # 连接会话(不指定具体的会话将连接最后退出的会话)
tmux kill-session -t <session-name> # 关闭会话(不指定具体的会话将关闭最先退出的会话)

tmux内部快捷键

1
2
3
prefix + s # 切换会话;指令:tmux switch -t <session-name>
prefix + d # 分离会话;指令:tmux detach
prefix + $ # 重命名会话;指令:tmux rename-session -t <old-session-name> <new-session-name>

窗口操作

1
2
3
4
prefix + c # 新建窗口;指令:tmux new-window [-n <window-name>]
prefix + , # 窗口重命名;指令:tmux rename-window <new-name>
prefix + p/n/number # 切换到(上/下一个)/指定编号窗口
prefix + w # 切换窗口;指令:tmux select-window -t <window-number>

窗格操作

如果你经常使用 vim,建议在配置文件中添加如下设置:

1
2
3
4
5
6
7
8
9
10
11
12
# Navigate panes using jkhl
# -r 表示可重复按键,大概500ms以内,重复的h、j、k、l按键都将有效
bind-key -r j select-pane -D
bind-key -r k select-pane -U
bind-key -r h select-pane -L
bind-key -r l select-pane -R

# 绑定prefix + Ctrl+hjkl键为面板上下左右调整边缘的快捷指令
bind -r ^k resizep -U 10 # 绑定Ctrl+k为往↑调整面板边缘10个单元格
bind -r ^j resizep -D 10 # 绑定Ctrl+j为往↓调整面板边缘10个单元格
bind -r ^h resizep -L 10 # 绑定Ctrl+h为往←调整面板边缘10个单元格
bind -r ^l resizep -R 10 # 绑定Ctrl+l为往→调整面板边缘10个单元格

快捷键

1
2
3
4
5
prefix + " # 分割水平窗格;指令:tmux split-window 
prefix + % # 分割垂直窗格;指令:tmux split-window -h
prefix + x # 关闭当前窗格
prefix + t # 显示当前时间
prefix + z # 放大/还原当前窗格

其他命令

1
2
3
4
5
6
7
8
9
10
# 列出所有快捷键,及其对应的 Tmux 命令
tmux list-keys

# 列出所有 Tmux 命令及其参数
tmux list-commands

# 列出当前所有 Tmux 会话的信息
tmux info

tmux source-file ~/.tmux.conf # 加载配置

其他问题

使用tmux后会发现终端无法上下滚动了,按键和鼠标滚轮都无效。
这时候可以考虑使用 prefix + [ 进入滚动模式,然后就可以使用上下箭头、pageup或pagedown上下滚动了,但是不能使用 shift pageup/pagedown 。
如果你熟悉vim,也可以考虑开启vi的移动和滚动方式。
如果想使用鼠标滚轮进行滚动,需要在配置文件中加入以下配置:

1
2
3
4
5
6
7
# For the Tmux version 2.1 and up
set -g mouse on
# For the Tmux version below 2.1
set -g mode-mouse on

# enable vi key-binding in scroll mode
set-window-option -g mode-keys vi

参考