当我进入 INSERT 模式时禁用 :set hlsearch

当我进入 INSERT 模式时禁用 :set hlsearch

我已经在 .vimrc 上设置了 hlsearch。

问题是:当我在文档中找到所需内容时,我希望它在进入该搜索字符串的插入模式时自动禁用 hlsearch。

因此,如果我尝试搜索另一个字符串,它会重新开始。这种行为在其他编辑器中是众所周知的。

我该怎么做?

答案1

通过以下方式进入插入模式时禁用突出显示i

noremap i :set nohlsearch<CR>i

通过退出插入模式来重新启用它(通过ESC):

inoremap <ESC> <ESC>:set hlsearch<CR>

您可以将这些想法应用到所有类型的键上,例如ao等等。

或者

autocmd InsertEnter * :set nohlsearch
autocmd InsertLeave * :set hlsearch

(对“InsertEnter”活动创意表示赞赏)

答案2

我找到了一种完全不同的方法,但这正是我所寻找的。

:set hlsearch
autocmd InsertEnter * :let @/=""
autocmd InsertLeave * :let @/=""

这会将“最新搜索”寄存器设置为空字符串,这样就不会突出显示任何内容。在按下 / 或 ? 后,仍可以使用该键记住较早的搜索,并可以选择要搜索的字符串的“开头”。

来源

感谢您的回答,但我认为这个解决方案确实很优雅。而且它有效,我测试过了!

相关内容