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>
(我来自那里)