Tmux 是否支持键序列的键绑定,例如 Vim (例如bind-key ab kill -pane)?或者我怎么能效仿呢?
答案 0 :(得分:4)
Tmux仅支持单字符键绑定(不幸的是)。
所以,只有这个:
bind-key a kill-pane
或者这个:
bind-key b kill-pane
请注意,这与例如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 %%'"
示例my_script
文件:
#!/bin/bash
case "$1" in
b)
tmux kill-pane
;;
c)
tmux kill-window
;;
esac
现在,在您重新加载tmux.conf并按prefix + a
之后,您将收到一个tmux提示,说“按下了”。
继续按b
和Enter
。来自脚本的tmux kill-pane
将执行。
同样,如果按prefix + a + c
和Enter
,您将从脚本中执行另一个选项。
这种模仿最终添加Enter
密钥所需的内容。
此外,提供的脚本是可扩展的,因此您可以添加更多&#34;绑定&#34;得到prefix + a + d + Enter
等..
答案 1 :(得分:2)
我正在使用tmux 2.3。
您可以通过定义自己的键表并将它们链接在一起来模拟键序列。
例如,如果我想<C-q>x
做某事,则将“ x”的绑定放入密钥表“ my-keys”,然后用{{1}绑定激活该密钥表的密钥}(Cq):
switch-client
注意:我从C-q开始,因为它与命令行和Vim的冲突似乎最少。
因此,现在您可以使用带有C-q前缀的每个键。
如果您要在序列中添加更多键,请添加另一个间接级别:
bind-key -Tmy-keys x send-keys "my binding"
# Multi-key prefix for custom bindings
bind-key -Troot C-q switch-client -Tmy-keys
因此,现在我将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
绑定到swap-pane
。
之所以可行,是因为
<C-q><C-w>s
激活“我的密钥”密钥表,<C-q>
,<C-w>
才能调用s