使 tmux 前缀绑定始终充当前缀,并且仅充当前缀(幂等绑定)?

Posted

技术标签:

【中文标题】使 tmux 前缀绑定始终充当前缀,并且仅充当前缀(幂等绑定)?【英文标题】:Make tmux prefix binding always act as prefix, and prefix only (idempotent binding)? 【发布时间】:2018-07-04 23:01:19 【问题描述】:

我已经浏览了 subreddit 和 SO 标签以及谷歌搜索的多个短语的几页,但我找不到任何解决这个问题的线程/主题/页面,所以这里是:

我希望 tmux 中的前缀键始终“激活”tmux 中的前缀。让我解释一下我的意思 - 来自手册页:

tmux 可以通过使用前缀键的组合键从附加的客户端控制,默认情况下是 `C-b' (Ctrl-b),然后是命令键。 默认的命令键绑定是:

C-b

将前缀键 (C-b) 发送到应用程序。

我的 tmux.conf 中没有设置“发送前缀”,以便在按下两次时将前缀组合发送到应用程序,但结果似乎是前缀现在充当“切换”。按一次,下一个键被解释为命令。按两次,下一个键将直接发送到应用程序。例如:

C-b, C-Up 导致我的窗格被调整了一个单元格,但是

C-b、C-b、C-Up 导致 ctrl + up 被发送到我的终端窗口。

我想让它不管前缀被按下多少次,下一个按下的键总是被解释为一个命令(即上面的两个击键序列给出相同的结果)。

提前致谢!


如果你想知道我为什么想要这个,我只想说它与一个非常复杂的 tmux.conf 文件和我的很多但不是几乎所有的键绑定上的可重复标志有关。我已经习惯了必须在不可重复的绑定之前立即按下前缀,我总是点击它,即使我刚刚使用完可重复的命令。这看起来像是对 tmux 前缀的“第二次”按下,这使得我的命令键发送到终端。边缘情况,我知道,但如果可以关闭此行为,它将为我节省大量错误的击键!

【问题讨论】:

【参考方案1】:

这应该可以解决问题:

bind-key C-b switch-client -Tprefix

如果您不将前缀视为特殊键,而仅将其视为root 表中的一个绑定,该表也调用switch-client -T,则更有意义:

# Equivalent to 'set-option -g prefix C-b'?
bind-key -Troot C-b switch-client -Tprefix

【讨论】:

已经搞砸了几天了,正是我想要的。谢谢(并接受)!

以上是关于使 tmux 前缀绑定始终充当前缀,并且仅充当前缀(幂等绑定)?的主要内容,如果未能解决你的问题,请参考以下文章

xml 架构验证错误“未绑定前缀”

CSS 3 - 过渡前缀 - 使用哪些?

接收解析 XML:未绑定前缀错误和属性缺少 Android 命名空间前缀

discord.py前缀命令[关闭]

如何在 discord.py 库中设置多个前缀或使前缀不区分大小写?

.NET Core MVC - 带有前缀绑定的 AJAX POST 请求