如何在 tmux 中快速切换到 n.10+ 窗口?

如何在 tmux 中快速切换到 n.10+ 窗口?

Tmux 默认带有以下键绑定,可在编号 0 到 9 的窗口之间快速切换:

C-b + 0-9

我的 tmux 中有几十个不同的项目文件夹、几个 ssh 会话和其他东西,我似乎总是会超出我可以快速访问的 10 个窗口,我很想找到一种快速切换到编号为 10 或更高的窗口的方法。现在我必须在 tmux 提示符中手动输入以下内容:

swap-window -t 12

这非常耗时。

有人找到一个可靠的快捷方式来帮助您快速访问 Windows 10 及更高版本吗?我知道 weechat 使用两个快捷方式解决了这个问题:

Alt + 0-9
Alt+j followed by \d{2}

使用 tmux 可以完成类似的任何事情吗?

答案1

有几种简单的方法可以做到这一点。

  • 用于C-b '选择窗口索引。

  • 用于C-b w获取可供选择的交互式索引(0-9a-z)。

  • 在 tmux.conf 中添加绑定以快速循环

    bind -r C-h select-window -t :-
    bind -r C-l select-window -t :+

最后一个中的-r可让您重复按键而无需重复C-b。通常第二个是击键次数最少的。

答案2

您可以使用switch-client -T<keytablename>配置一系列按键来直接访问高编号窗口。

例如,我使用此配置通过 ++Ctrl-b跳转到 Windows 10-19 :-[0-9]

bind - switch-client -Tabove9
bind -Tabove9 0 select-window -t:10
bind -Tabove9 1 select-window -t:11
bind -Tabove9 2 select-window -t:12
bind -Tabove9 3 select-window -t:13
bind -Tabove9 4 select-window -t:14
bind -Tabove9 5 select-window -t:15
bind -Tabove9 6 select-window -t:16
bind -Tabove9 7 select-window -t:17
bind -Tabove9 8 select-window -t:18
bind -Tabove9 9 select-window -t:19

详细解释:

正如 tmux 手册页中所述,switch-client可以用来设置当前键表来创建组合键:

交换机客户端 [-ElnprZ] [-c 目标客户端] [-t 目标会话] [-T 键表]

...

-T 设置客户端的密钥表;客户端的下一个密钥将从密钥表中解释。这可用于配置多个前缀密钥,或将命令绑定到密钥序列。例如,要输入“abc”,请运行 list-keys 命令:

               bind-key -Ttable2 c list-keys
               bind-key -Ttable1 b switch-client -Ttable2
               bind-key -Troot   a switch-client -Ttable1

因此,在我的示例中,我将-键配置为切换到名为的自定义表above9,然后将该表中0的键配置9为切换到10窗口19

这相当于 GNU screen 的bind -c <class>(我来自那里)

相关内容