我正在使用腻子(在 Windows 7 上)作为编辑器连接到 shell 和 Vim。我也在 Vim 中启用了 mouse=a 选项,但是当我单击 Vim 窗口的右侧时(假设它就像 70%+屏幕宽度区域变得奇怪)。我慢慢习惯了这种行为,但我真的很想知道我是否能以某种方式解决这个问题。
PuTTY 使用 xterm 协议发送鼠标事件,该协议可以追溯到八十年代中期的 X10。这将鼠标坐标编码为每个行和列的单个字节,其中添加了 32(空格字符的 ASCII 代码)。这允许坐标最大为 223(即 255 - 32)。
不幸的是,这种编码不符合终端控制序列的适用标准,如果应用程序没有特别考虑,范围可以进一步限制为 95(即 127 - 32)。特别是,如果应用程序在解析控制序列之前执行 UTF-8 解码,超过 95 的鼠标坐标最终会被视为无效的 UTF-8。
在过去的一年中,已经多次尝试在 xterm 中解决这个问题。其中最好的一种是在补丁#277 中添加的所谓 SGR 1006 模式,它使用具有无限坐标的符合标准的控制序列。对此的支持将慢慢渗透到其他终端仿真器和应用程序中。