vim 中有没有办法仅在可视模式下更改搜索文本高亮颜色?

Is there a way in vim to change search text highlight color in visual mode only?

(我使用的是 nord-vim 配色方案,但这是我尝试过的 vim 中所有配色方案的问题,我正在寻找需要哪些设置进行更改以实现预期目标)

我在 vim 中遇到问题,如果我进行搜索,搜索匹配项的突出显示文本颜色与视觉模式背景颜色相同,因此如果我搜索一些文本,然后视觉 select 一些包含一个或多个搜索结果的文本行,文本消失。这样做是因为视觉模式正在改变背景颜色而不是文本颜色,这是期望的行为,除了在搜索结果的一种情况下,我想改变它的文本颜色但只能在视觉模式下。

这在 vim 中可行吗?

示例:

(搜索一些文本,它被突出显示)

(视觉上 select 一些包含搜索结果的文本行)

如果搜索结果将文本颜色更改为其他一些可区分的颜色,以表明它们是搜索结果,但仅限于视觉模式,我希望如此。

遗憾的是没有记录,但它确实发生了,所以一些高亮组,比如 Visual,比其他高亮组有某种优先级,比如 Search:

hi Visual cterm=NONE ctermbg=cyan   ctermfg=black
hi Search cterm=NONE ctermbg=yellow ctermfg=black

AFAIK,明确增加高亮组优先级的唯一方法是将其 cterm/gui 属性设置为 reverse 并交换 *fg*bg 属性:

hi Visual cterm=NONE    ctermbg=cyan  ctermfg=black
hi Search cterm=reverse ctermbg=black ctermfg=yellow

但即便如此,你会注意到只有 reverse 位在与 Visual 交互时有一些影响,Search 的颜色属性完全被忽略,这可能或者可能不尽如人意。

This gist 解释了如何最好地覆盖突出显示组。