我正在使用 tmux 2.3。
您可以通过定义自己的密钥表并将它们链接在一起来模拟密钥序列。
例如,如果我想<C-q>x做某事,我将 'x' 的绑定放入密钥表“my-keys”中,然后使用switch-client(Cq)绑定激活该密钥表的密钥:
bind-key -Tmy-keys x send-keys "my binding"
# Multi-key prefix for custom bindings
bind-key -Troot C-q switch-client -Tmy-keys
Run Code Online (Sandbox Code Playgroud)
注意:我从 Cq 开始,因为它似乎与命令行和 Vim 的冲突最少。
因此,现在您可以使用带有 Cq 前缀的每个键。
如果您想要序列中的更多键,请添加另一个间接级别:
bind-key -Tmy-keys x send-keys "my binding"
# Pane (i.e. 'W'indow commands like Vim with C-w)
bind-key -Tmy-keys-window-ctl s swap-pane
bind-key -Tmy-keys C-w switch-client -T my-keys-window-ctl
# Multi-key prefix for custom bindings
bind-key -Troot C-q switch-client -Tmy-keys
Run Code Online (Sandbox Code Playgroud)
所以,现在我必须swap-pane要<C-q><C-w>s.
这有效,因为
<C-q> 激活“my-keys”密钥表,<C-w>,s要调用的绑定swap-pane小智 5
Tmux仅支持单字符键绑定(不幸的是)。
因此,仅此:
bind-key a kill-pane
Run Code Online (Sandbox Code Playgroud)
或这个:
bind-key b kill-pane
Run Code Online (Sandbox Code Playgroud)
请注意,这与例如C-a(Ctrl-a)或M-a(Alt-a)不同。
即使我们的用户使用多个字符编写代码,甚至必须按2个键来调用它们,但Ctrl-a和Alt-a实际上都是tmux的单个字符(据我所知)。
另类
...可能不是您所期望的,但是这里是:
# in .tmux.conf
bind a command-prompt -p "pressed a" "run '~/my_script %%'"
Run Code Online (Sandbox Code Playgroud)
和示例my_script文件:
#!/bin/bash
case "$1" in
b)
tmux kill-pane
;;
c)
tmux kill-window
;;
esac
Run Code Online (Sandbox Code Playgroud)
现在,在重新加载tmux.conf并按之后,prefix + a您将得到一个tmux提示符,提示“按下a”。
继续并按b和Enter。tmux kill-pane从脚本将执行。
同样,如果您按prefix + a + c,Enter您将从脚本中执行另一个选项。
这种模仿Enter在最后添加密钥来模仿您想要的内容。
另外,提供的脚本是可扩展的,因此您可以添加更多的“绑定”来获取prefix + a + d + Enter等。