当我尝试使用 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
作为命令运行tmux
tmux会话,或者直接在tmux提示符(使用 Cb 打开:
)。注意:在 中所做的更改只有在您重新打开文件或重新启动计算机~/.tmux.conf
后才会生效。source
tmux服务器。
答案2
我也遇到了这个问题;这肯定是箭头键特有的(也可能是 cygwin)。目前,我决定解除箭头键的绑定并将选择窗格命令移到其他地方,新的键绑定可以完美运行。但这不是令人满意的解决方案。如果有人知道发生了什么,我很想知道。