清除搜索突出显示autocmd BufWrite

我尝试了这三个问题中的大部分建议:

搜索文本后摆脱Vim的亮点
如何摆脱Vim中的搜索亮点
Vim清除上次搜索高亮显示

主要是:noh ,它在我手动输入时起作用。 我只是希望它发生在BufWrite上,所以我尝试了多种方式,其中没有一种可行:

function! RemoveHighLight()
    :noh
endfunction

autocmd BufWrite * :call RemoveHighLight()
autocmd BufWrite * :noh
autocmd BufWrite * :execute "normal! :noh<cr>"

在函数和第三个autocmd中调试echom s和adebug<esc>表明它们成功执行,只是:noh没有效果。

(也试过:let @/ = "" ,但它清除了搜索模式,这不是我正在寻找的。我只是想摆脱突出显示直到按n或类似)

使用BufWritePost也没有效果。


这是一种解决方法,但您可以通过autocmd设置nohlsearch 。 然后,您可以添加一个映射,将其重新设置为n和N.

au BufWrite * set nohlsearch
nnoremap <silent> n n:set hlsearch<CR>
nnoremap <silent> N N:set hlsearch<CR>

或者也许更好,检查它是否已经设置

au BufWrite * set nohlsearch

nnoremap <silent> n n:call ToggleHlBack()<CR>
nnoremap <silent> N N:call ToggleHlBack()<CR>

function! ToggleHlBack()
  if &hlsearch == 'nohlsearch'
    set hlsearch
  endif
endfunction
链接地址: http://www.djcxy.com/p/49387.html

上一篇: Clear search highlight on autocmd BufWrite

下一篇: Vim: When sourcing vimrc, last search hl re