无论如何动态启用/禁用Vim中的突出显示?

时间:2013-02-01 15:40:31

标签: vim macvim

好的,所以基本上Vim突出搜索的方式让我不高兴。基本上你做搜索,然后你必须在你的vimrc中键入/ asdf或者有这样的快捷方式:

nn <silent> <leader><space> :noh<CR>

这就是我所拥有的。但它仍然是太多的脑力劳动。基本上,当我进行搜索时,我希望突出显示启用(就像现在一样),但如果我做其他事情而不是循环搜索(使用n / N),那么我想突出显示关闭。这基本上是我的工作流程,所以我想知道我是否可以自动化它。此外,如果我搜索,执行除n / N之外的操作(应该关闭突出显示),然后再次按n / N,它应该重新启用。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这很难。一个想法是

:autocmd CursorHold * call feedkeys(":noh\<CR>")

(需要使用feedkeys(),因为:nohlsearch在函数和autocmds中无效。)无论何时暂停光标几秒钟,都会清除突出显示。您可以添加其他触发器,例如InsertEnterCursorHoldI

什么行不通的是CursorMoved,因为搜索和n / N也会跳转。您需要重载这些命令,在跳转后存储光标位置,并修改autocmd以仅在位置不同时清除突出显示。

我的所作所为:输入映射到:nohlsearch;它很容易到达。

答案 1 :(得分:-1)

您可以使用以下方式打开或关闭它:

:set hls

:set nohls

我将 F7 映射到set hls!

noremap <F7>    :set hls!<CR>
相关问题