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

gli*_*tch 74 keyboard-shortcuts shortcuts tmux

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

C-b + 0-9
Run Code Online (Sandbox Code Playgroud)

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

swap-window -t 12
Run Code Online (Sandbox Code Playgroud)

这是相当耗时的。

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

Alt + 0-9
Alt+j followed by \d{2}
Run Code Online (Sandbox Code Playgroud)

使用 tmux 可以完成这些方面的任何事情吗?

Jas*_*son 120

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

  • 使用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。通常,第二个是最少的击键次数。

  • 前两个命令正是我要找的,谢谢杰森! (5认同)

小智 7

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

\n

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

\n
bind - switch-client -Tabove9\nbind -Tabove9 0 select-window -t:10\nbind -Tabove9 1 select-window -t:11\nbind -Tabove9 2 select-window -t:12\nbind -Tabove9 3 select-window -t:13\nbind -Tabove9 4 select-window -t:14\nbind -Tabove9 5 select-window -t:15\nbind -Tabove9 6 select-window -t:16\nbind -Tabove9 7 select-window -t:17\nbind -Tabove9 8 select-window -t:18\nbind -Tabove9 9 select-window -t:19\n
Run Code Online (Sandbox Code Playgroud)\n

详细解释:

\n

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

\n
\n

switch-client [-ElnprZ] [-c 目标客户端] [-t 目标会话] [-T 密钥表]

\n

...

\n

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

\n
               bind-key -Ttable2 c list-keys\n               bind-key -Ttable1 b switch-client -Ttable2\n               bind-key -Troot   a switch-client -Ttable1\n
Run Code Online (Sandbox Code Playgroud)\n
\n

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

\n

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

\n