Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否存在动态启用/禁用Vim中突出显示的方法?_Vim_Macvim - Fatal编程技术网

是否存在动态启用/禁用Vim中突出显示的方法?

是否存在动态启用/禁用Vim中突出显示的方法?,vim,macvim,Vim,Macvim,基本上Vim突出显示搜索的方式让我不高兴。基本上,您要进行搜索,然后必须键入/asdf或在vimrc中有如下快捷方式: nn <silent> <leader><space> :noh<CR> nn:noh 这就是我所拥有的。但这仍然是太多的脑力劳动。基本上,当我执行搜索时,我希望启用高亮显示(就像现在一样),但是如果我不在搜索中循环(使用n/n),那么我希望禁用高亮显示。这基本上是我的工作流程,所以我想知道我是否可以自动化它。此外,如果我搜索

基本上Vim突出显示搜索的方式让我不高兴。基本上,您要进行搜索,然后必须键入/asdf或在vimrc中有如下快捷方式:

nn <silent> <leader><space> :noh<CR>
nn:noh
这就是我所拥有的。但这仍然是太多的脑力劳动。基本上,当我执行搜索时,我希望启用高亮显示(就像现在一样),但是如果我不在搜索中循环(使用n/n),那么我希望禁用高亮显示。这基本上是我的工作流程,所以我想知道我是否可以自动化它。此外,如果我搜索,请执行n/n以外的操作(应关闭突出显示),然后再次按n/n,它将重新启用


有什么想法吗?

那很难。一个想法是

:autocmd CursorHold * call feedkeys(":noh\<CR>")
:autocmd CursorHold*调用feedkeys(“:noh\”)
(需要使用
feedkeys()
,因为
:nohlsearch
在函数和自动MDS中无效。)这会在光标暂停几秒钟时清除突出显示。您可以添加其他触发器,如
InsertEnter
CursorHoldI

不起作用的是
光标移动
,因为搜索和
n
/
n
也会跳转。您需要重载这些命令,在跳转后存储光标位置,并修改autocmd以仅在位置不同时清除高亮显示


我所做的:我已将输入映射到
:nohlsearch
;它既快又容易够到。

您可以通过以下方式打开或关闭它:

:设置hls

:设置nohls

我将F7映射到
设置hls

noremap <F7>    :set hls!<CR>
noremap:设置hls!

折衷:使您的映射更加简单,例如,我发现
:nnoremap:nohls
非常直观(一次击键!)。@glts:从下面相同的答案和一次否决票来看,这不是OP想要的。