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 启动新会话 回车,Enter 键
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

我们可以选择添加参数 onoff 以指定所需的状态,缺省该参数时 tmux 简单对上一状态进行反转。此选项特定于一个窗口,因此它不会更改其他会话或窗口的操作方式。同步完成后,通过重复本命令来关闭它。

这是一种在多台机器/多个实例上运行交互式命令的简单方法,适合的场景可是为了比较它们的速度或输出,或者如果它们有类似的上下文,那么这就是一种快速而肮脏的方法,以并行方式执行相同的管理任务。一般来说,使用 CapistranoPuppet 来处理后者是更专业的做法。[^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

参考链接

  1. How to Sync Tmux Panes

添加新评论