一千萬個為什麽

搜索

進入插入模式時停止突出顯示

我希望Vim在進入插入模式時停止突出顯示匹配項。並且在執行新搜索之前不要再次突出顯示它們。

首先想到的是將以下行添加到我的 .vimrc 中。

autocmd InsertEnter * nohlsearch

但是從:help:nohlsearch 我們知道 nohlsearch 在自動命令中不起作用。

另一種選擇是該行,它清除最後的搜索模式。沒有什麽可比的,Vim沒有什麽值得強調的。

autocmd InsertEnter * let @/ = ""

This stops the highlighting as intended. Nonetheless, it has side effects: because the last search pattern is cleared, commands such as n or / will not behave as intended.

所以我的問題是:如何以有效的方式進入插入模式並且沒有重大副作用或根本沒有副作用時停止突出顯示?

最佳答案

您可以重新映射 i 以先運行:nohlsearch ,然後再運行 i

nnoremap i :nohlsearchi

您可能希望重新映射不僅僅是 i 。對於所有插入模式命令(來自 :help insertion ) ):

for s:c in ['a', 'A', '', 'i', 'I', 'gI', 'gi', 'o', 'O']
    exe 'nnoremap ' . s:c . ' :nohlsearch' . s:c
endfor

這不會涵蓋:startinsert ,但是這並沒有被大量使用,所以可能沒問題。

轉載註明原文: 進入插入模式時停止突出顯示