Tmux 快捷键 & 速查表
Attention:
本文内容适用于 Tmux 2.3 及以上的版本,但是绝大部分的特性低版本也都适用;
鼠标支持、VI 模式、插件管理在低版本可能会与本文描述的配置语法/方式不兼容。
请先通过tmux -V
来查看你现在正在使用的 tmux 版本。
Outside Tmux
外面的操作,独立的 Shell 会话,不归 tmux 管。
- 启动新会话:
tmux [new -s 会话名 -n 窗口名]
- 恢复会话:
tmux at [-t 会话名]
- 列出所有会话:
tmux ls
- 关闭会话:
tmux kill-session -t 会话名
- 关闭所有会话:
tmux ls | grep -P "^.*?:\s*\d+" | cut -d. -f1 | awk '{print substr($1, 0, length($1)-1)}' | xargs kill
注意:关闭操作不能撤销,请确保你已经做好所有会话中数据的备份。
In Tmux
在 Tmux 中,按下 Tmux 前缀组合键 ctrl+b
Session
按键 | 触发的命令 | 备注 |
---|---|---|
:new |
启动新会话 | |
s | 列出所有的会话 | |
$ | 重命名当前会话 |
Windows
类似于浏览器的标签页,开启鼠标支持后,可点击切换到对应的标签页。
按键 | 触发的命令 | 备注 |
---|---|---|
c | 创建新窗口 | 在最右边创建一个新窗口 |
w | 列出所有窗口 | |
n | 下一个窗口 | |
p | 上一个窗口 | |
f | 查找窗口 | |
, | 重命名当前窗口 | |
& | 关闭当前窗口 |
Sort Windows
调整窗口排序,互换位置
按下 tmux 前缀键 ctrl+b
+ :
,呼出命令行输入栏。
输入命令 | 备注 |
---|---|
swap-window -s 3 -t 1 |
交换 3 号和 1 号窗口 |
swap-window -t 1 |
交换当前和 1 号窗口 |
move-window -t 1 |
移动当前窗口到 1 号 |
Panes
把窗口分割成一个个小格子,即窗格
按前缀键 + 以下按键
按键 | 触发的命令 | 备注 |
---|---|---|
% | 垂直分割 | 分割成左右两大块 |
" | 水平分割 | 分割成上下两大块 |
o | 切换窗格 | |
x | 关闭窗格 | |
<space> |
切换布局 | 水平还是垂直布局 |
q | 显示窗格序号 | 当数字表示的序号出现时, 按下特定数字就能选中对应的窗格。 |
{ | 与上一个窗格交换位置 | |
} | 与下一个窗格交换位置 | |
z | 开启窗格最大化/最小化 | 临时占满整个窗口 |
Sync Panes
同步窗格,开启后在一个窗格执行的操作,将会同时在同一个窗口的其它窗口执行。
操作步骤,切换到想要的窗口,输入 Tmux 前缀键和一个冒号 :
呼出命令提示行,然后输入:
:setw synchronize-panes
我们可以选择添加参数 on
或 off
以指定所需的状态,缺省该参数时 tmux 简单对上一状态进行反转。此选项特定于一个窗口,因此它不会更改其他会话或窗口的操作方式。同步完成后,通过重复本命令来关闭它。
这是一种在多台机器/多个实例上运行交互式命令的简单方法,适合的场景可是为了比较它们的速度或输出,或者如果它们有类似的上下文,那么这就是一种快速而肮脏的方法,以并行方式执行相同的管理任务。一般来说,使用 Capistrano 或 Puppet 来处理后者是更专业的做法。[^1]
Mouse
20221125 更新鼠标的支持
键盘操作虽然形成肌肉记忆后也很快,但是遇到需要拖动调节的 panel
长宽,或者在距离较远的 window
之间跳转,还是鼠标更为直观一些
通过修改用户主目录下的 ~/.tmux.conf
来实现鼠标点击、滚轮等操作的支持。
set-option -g mouse on
set -g mouse on
# make scrolling with wheels work
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M
bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -t vi-copy C-WheelUpPane halfpage-up
bind -t vi-copy C-WheelDownPane halfpage-down
bind -t emacs-copy C-WheelUpPane halfpage-up
bind -t emacs-copy C-WheelDownPane halfpage-down
# To copy, drag to highlight text in yellow, press Enter and then release mouse
# Use vim keybindings in copy mode
setw -g mode-keys vi
# Update default binding of `Enter` to also use copy-pipe
unbind -t vi-copy Enter