tmux:偶尔按 CTRL+B打印字符代码([A、[B、[C 或 [D)而不是切换窗格

tmux:偶尔按 CTRL+B打印字符代码([A、[B、[C 或 [D)而不是切换窗格

当我尝试使用 ctrl+b 在 tmux 中切换窗格时,tmux 会偶尔打印相应的字符代码 [A、[B、[C 或 [D,而不是切换窗格。

我可以以完全相同的方式重复执行此操作,75% 的时间它会正确切换,另外 25% 的时间它会打印字符代码。

ctrl+b <up arrow>    prints [A
ctrl+b <down arrow>  prints [B
ctrl+b <right arrow> prints [C
ctrl+b <left arrow>  prints [D

我正在使用连接到 Linux Mint 的 cygwin。Tmux 在 Linux mint 上运行,我使用的 shell 是 bash。

编辑:为了使这个问题更易于搜索,我将添加这些关键词:

终端输出字符代码开括号A,开括号B,开括号C,开括号D。

有任何想法吗?

答案1

这听起来像tmuxescape-time对于 Cygwin 系统与 Linux 系统之间的连接质量来说,'s设置得有点低。

[ B许多终端为向下箭头键生成三个字节序列 ESC 。escape-time设置告诉tmux收到 ESC 后需要等待多长时间才能收到完整的序列;如果时间用完而没有收到完整的序列,那么tmux将把单个字节视为单个按键(将 Cb ESC 视为未绑定的tmux键,并传递[B到活动窗格的 tty)。

因此,要么你escape-time设置了一个非常低的值(当你访问时,它可能工作正常,tmux您可能已经注意到,在严格的本地连接上,两台机器之间的连接有时会比您的值稍微滞后一点escape-time。您可以使用命令查询当前值tmux show-options -s | grep escape-time

默认值为 500 毫秒;在大多数情况下,这应该可以正常工作,但对于边缘连接来说可能太短了。您可以尝试提高值escape-time

set-option -s escape-time 1000

你可以把它放在你的文件中,在 shell 中~/.tmux.conf作为命令运行tmuxtmux会话,或者直接在tmux提示符(使用 Cb 打开:)。注意:在 中所做的更改只有在您重新打开文件或重新启动计算机~/.tmux.conf后才会生效。sourcetmux服务器。

答案2

我也遇到了这个问题;这肯定是箭头键特有的(也可能是 cygwin)。目前,我决定解除箭头键的绑定并将选择窗格命令移到其他地方,新的键绑定可以完美运行。但这不是令人满意的解决方案。如果有人知道发生了什么,我很想知道。

相关内容