8

我知道可以阻止 Vim 在任何搜索中突出显示,但是有没有办法让它在常规搜索中突出显示,而不是例如替换?

我经常会突出显示一段文本,然后执行以下操作:

:s/^/#/

注释掉整个块。但是后来我的屏幕左侧上下有一个难看的黄色条,我:noh每次都必须清除它。

我希望突出显示保留在常规/搜索中。这可能吗?

4

2 回答 2

5

这并不能完全回答您的问题,但对我来说有同样的问题有帮助:我添加了此命令以在搜索或搜索并替换后轻松停用突出显示

nnoremap <esc> :noh<return><esc>

(来自Vim clear last search highlighting

于 2013-02-13T21:32:10.250 回答
3

我的解决方案:把它放在你的 vimrc 文件中

set nohlsearch

noremap * :set hlsearch<CR>:nohlsearch<CR>*
noremap / :set hlsearch<CR>:nohlsearch<CR>/
noremap ? :set hlsearch<CR>:nohlsearch<CR>?

nnoremap <F4> :set invhlsearch<CR>
inoremap <F4> <ESC>:set invhlsearch<CR>gi
nnoremap <CR> :set nohlsearch<CR>

它能做什么:

  1. 搜索总是启用亮点。
  2. 用于Enter关闭突出显示直到下一次搜索,但不是下一次替换。再次按下Enter不会重新打开它们。
  3. 用于F4关闭突出显示直到下一次搜索,但不是下一次替换。再次按下F4将切换最后一个搜索模式的突出显示——搜索或替换——如果有的话。

关于从未真正解释清楚的亮点的一些注释:
当该'hlsearch'选项打开时,所有未来的搜索/替换都将打开"highlight visibility"。current"highlight visibility"并不是一个你可以直接查询或独立设置的选项,但你可以通过命令独立关闭高亮可见性:nohlsearch(这与 不一样:set nohlsearch,因为下一次搜索将再次启用可见性)。

此外,每当您运行该命令时,都会:set hlsearch产生两种效果:它设置选项以及让 vim 忘记您是否曾经键入过:nohlsearch. 换句话说,改变'hlsearch'(开或关)将迫使电流"highlight visibility"在逻辑上匹配。

于 2013-05-25T14:12:43.987 回答