白色终端光标和黄色 Vim 搜索

白色终端光标和黄色 Vim 搜索

我的 XTerm 中有一个闪烁的块光标。目标是始终能够知道我当前的位置。它通常工作正常,但当我将光标放在与光标颜色类似的背景上时,它会失败 - 我的意思的一个主要例子是 Vim 中的搜索:它们有黄色背景,我的光标是白色的(由于.foregroundin .Xesources),并且因此,我几乎无法分辨哪个突出显示的结果是当前的结果。

我想让光标反转当前字符颜色,这样我仍然可以获得黄色搜索结果(但当光标闪烁时,光标指向的字符将具有深色背景和浅色文本)。该解决方案至少应该适用于这个特定场景。

我不确定这是否应该在 Vim 或 XTerm 的配置中完成。我尝试在网络和手册页中搜索此内容,但未能找到任何相关内容。

请注意,我不使用 gvim,我使用安慰维姆。许多资源都提到guibg=reverse了 Vim,但这在这里不起作用。

答案1

如果不指定光标颜色,xterm将使用光标所在单元格上的前景色/背景色的相反颜色来绘制光标。那是针对 xterm 的。其他程序不会有这样的行为。

这就是xterm 手册说:

cursorColor(班级CursorColor
指定文本光标使用的颜色。默认为“ XtDefaultForeground”。默认情况下,xterm尝试防止此颜色与背景颜色相同,因为它通过填充文本单元格的背景来绘制光标。相同的限制适用于可能改变该颜色的控制序列。

设置此资源会覆​​盖 xterm 对光标颜色的大部分调整。它仍然会使用反向视频来禁止某些情况,例如黑色背景上的黑色光标。

同时,如果您选择文本(例如使用鼠标),则 xterm 会尝试使光标和选择内容看起来不同。有与此相关的资源设置,具体取决于您的喜好:highlightReverse,highlightSelectionhighlightTextColor

Xterm 反转前景色/背景色的方案假设光标位于已经可读的单元格上。如果文本是黄色,背景是白色,则光标的可读性不会比文本更好。

Xterm 也有一个转义序列,可用于设置光标颜色,但 vim 没有提供使用它来覆盖光标颜色的方法(实际上,这样做可能会很复杂)。

由于 xterm 的默认光标着色方案不会降低可读性,因此在 vim 中解决此问题的方法是选择可读的颜色主题(无黄底白字)。

答案2

除了改变颜色之外,我还能想到几种方法来使光标更容易找到。人们可以切换cursorcolumn或 的cursorline打开和关闭,或者将它们设置为永久打开。对于我最喜欢的配色方案,这可能不足以提供足够的暗示,也可能太丑而难以忍受。

另一个解决方案是切换搜索突出显示 – 使用 关闭:se nohls并使用 开启:sehls。这些是持久性设置,人们可能会忘记返回突出显示的搜索。

为了关闭当前搜索的突出显示,我在 .vimrc 中使用以下设置映射了“Ctrl+l”(这是一个 ell,而不是一个)。突出显示将在下次搜索时返回。 “Ctrl+l”对于这种重新映射很方便,因为它的默认映射是:redraw刷新屏幕的命令。

nnoremap <silent> <C-l> :<C-u>nohlsearch<CR><C-l>

我还有一个映射,使用“F3”来切换持久搜索突出显示:

nnoremap <F3> :set hlsearch! hlsearch?<CR>

相关内容