我的 XTerm 中有一个闪烁的块光标。目标是始终能够知道我当前的位置。它通常工作正常,但当我将光标放在与光标颜色类似的背景上时,它会失败 - 我的意思的一个主要例子是 Vim 中的搜索:它们有黄色背景,我的光标是白色的(由于.foreground
in .Xesources
),并且因此,我几乎无法分辨哪个突出显示的结果是当前的结果。
我想让光标反转当前字符颜色,这样我仍然可以获得黄色搜索结果(但当光标闪烁时,光标指向的字符将具有深色背景和浅色文本)。该解决方案至少应该适用于这个特定场景。
我不确定这是否应该在 Vim 或 XTerm 的配置中完成。我尝试在网络和手册页中搜索此内容,但未能找到任何相关内容。
请注意,我不使用 gvim,我使用安慰维姆。许多资源都提到guibg=reverse
了 Vim,但这在这里不起作用。
答案1
如果不指定光标颜色,xterm将使用光标所在单元格上的前景色/背景色的相反颜色来绘制光标。那是针对 xterm 的。其他程序不会有这样的行为。
这就是xterm 手册说:
cursorColor
(班级CursorColor
)
指定文本光标使用的颜色。默认为“XtDefaultForeground
”。默认情况下,xterm尝试防止此颜色与背景颜色相同,因为它通过填充文本单元格的背景来绘制光标。相同的限制适用于可能改变该颜色的控制序列。设置此资源会覆盖 xterm 对光标颜色的大部分调整。它仍然会使用反向视频来禁止某些情况,例如黑色背景上的黑色光标。
同时,如果您选择文本(例如使用鼠标),则 xterm 会尝试使光标和选择内容看起来不同。有与此相关的资源设置,具体取决于您的喜好:highlightReverse
,highlightSelection
和highlightTextColor
。
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>