我想将 tmux 中的 Ctrl-` 绑定到选择窗格。
我尝试过:bind -n C-` select-pane -t :.+ 结果显示:unknown key C-`
我也尝试过:bind -n 'C-`' select-pane -t :.+ 它给了我同样的错误。
然后我尝试了简单的 `:bind -n` select-pane -t:.+ ,效果很好(但绑定` 不是 C-`)。
最令人困惑的是,我尝试了:bind -n `-C select-pane -t :.+,结果出乎意料地成功了(我必须先按反引号,然后按 ctrl)。tmux 不喜欢 Ctrl-` 中的什么?
答案1
tmux
使用以下逻辑来处理ctrl修饰符key-string.c
(反引号是代码 96):
/* Convert the standard control keys. */
if (key < KEYC_BASE && (modifiers & KEYC_CTRL) && !strchr(other, key)) {
if (key >= 97 && key <= 122)
key -= 96;
else if (key >= 64 && key <= 95)
key -= 64;
else if (key == 32)
key = 0;
else if (key == 63)
key = KEYC_BSPACE;
else
return (KEYC_NONE);
modifiers &= ~KEYC_CTRL;
}
尽管某些应用程序可能会将 64 到 126 的整个范围视为有效ctrl,但 tmux 会排除反引号、花括号、竖线和波浪号。可能的原因是它们对于键绑定不太有用,因为未修改的键通常用于 shell 脚本中。
另一方面,ctrl-@
会有相同的预期解释,您可以使用它。
答案2
cat
我在某处找到了使用tmux 内部检查转义序列的建议。
- 跑步
tmux
- 跑步
cat
- 按下按键
C-`
在我的终端上我有^@
所以在配置中我输入了
set -g prefix ^@
为我工作roxterm