在autocmd BufWrite上清除搜索突出显示

时间:2015-11-01 18:31:49

标签: vim autocmd

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

Get rid of Vim's highlight after searching text
How to get rid of search highlight in Vim
Vim clear last search highlighting

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

function! RemoveHighLight()
    :noh
endfunction

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

在函数和第三个autocmd中展示echomadebug\<esc>表明它们已成功执行,只有:noh无效。

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

使用BufWritePost也无效。

1 个答案:

答案 0 :(得分:2)

这是一种解决方法,但您可以通过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