在 Windows 终端上根据模式更改 Vim 中的光标宽度或颜色

在 Windows 终端上根据模式更改 Vim 中的光标宽度或颜色

我正在使用 PuTTY 通过 SSH 从我的 Windows 7 工作站连接到 Ubuntu 服务器。连接后,我将使用 Ubuntu 服务器上的 Vim 安装来编辑文件。我希望在进入和退出插入模式时光标会发生变化。我的 .vimrc 文件的一部分如下所示,但它不会改变光标:

if &term =~ "xterm"
    echo "xTerm!!inate!"
    let &t_SI = "\<Esc>]12;purple\x7"
    let &t_EI = "\<Esc>]12;blue\x7"
endif

我根据回显知道 if 语句正在执行。

编辑:实际上,我更愿意将光标更改为垂直线,就像在 PuTTY 设置中一样,而不是更改颜色,或者甚至两者兼而有之。但只改变颜色比什么都不做要好得多。此外,如果有另一个兼容 Windows 7 Professional 64 位的终端可以做到这一点(最好是免费的),我愿意更换终端。也许 Poderosa 可以做到这一点?

答案1

您的示例使用 xterm 似乎运行良好,因此我认为.vimrc问题不在于您。

深入挖掘一下,似乎 PuTTY 似乎没有实现您用来更改光标颜色的 OSC 转义代码(请参阅do_oscPuTTYterminal.c源代码)。浏览源代码,我也找不到任何其他机制来做类似的事情。这意味着在 PuTTY 中可能没有简单的方法来实现这一点。

因此,您的解决方案可能仅限于:

  1. 试图恳求PuTTY作者实现相关的OSC转义代码;
  2. 更改您的终端程序;或者
  3. 找到另一种方法让 vim 知道您处于什么模式。

不幸的是,我怀疑第三个将是最简单的。

相关内容