
Tmux Guideline
专业术语
在讲解 tmux 之前,让我们先来熟悉几个名词。
- 会话(session)
当我们在终端中执行一个任务时,窗口一旦关闭,会话随之结束,其中运行的进程也就被强制终止了。
我们可以使用 tmux 将窗口与会话解绑。 - 窗口(window)
窗口就是我们所看到的整个终端界面。 - 窗格(pane)
窗口可以划分为多个窗格,可以根据需要垂直排列或水平排列。
前缀键(send-prefix)
tmux 中的很多操作都是通过前缀键+快捷键来实现的。用户也可以根据自己需要在~/.tmux.conf
配置文件中修改前缀键。
会话操作
tmux外部指令
tmux [new -s ] # 新建会话
tmux ls # 查看会话
tmux attach [-t ] # 连接会话(不指定具体的会话将连接最后退出的会话)
tmux kill-session -t # 关闭会话(不指定具体的会话将关闭最先退出的会话)
tmux内部快捷键
prefix + s # 切换会话;指令:tmux switch -t
prefix + d # 分离会话;指令:tmux detach
prefix + $ # 重命名会话;指令:tmux rename-session -t
窗口操作
prefix + c # 新建窗口;指令:tmux new-window [-n ]
prefix + , # 窗口重命名;指令:tmux rename-window
prefix + p/n/number # 切换到(上/下一个)/指定编号窗口
prefix + w # 切换窗口;指令:tmux select-window -t
窗格操作
如果你经常使用 vim,建议在配置文件中添加如下设置:
# 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个单元格
快捷键
prefix + " # 分割水平窗格;指令:tmux split-window
prefix + % # 分割垂直窗格;指令:tmux split-window -h
prefix + x # 关闭当前窗格
prefix + t # 显示当前时间
prefix + z # 放大/还原当前窗格
其他命令
# 列出所有快捷键,及其对应的 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的移动和滚动方式。
如果想使用鼠标滚轮进行滚动,需要在配置文件中加入以下配置:
# 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