2

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

搜索文本后去掉 Vim 的高亮
如何去掉 Vim 中的搜索高亮
Vim 清除上次搜索高亮

它主要是:noh, 当我手动输入它时它可以工作。我只是希望它发生在 BufWrite 上,所以我尝试了多种方法,但都没有奏效:

function! RemoveHighLight()
    :noh
endfunction

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

在函数和第三个autocmd中调试echoms并adebug\<esc>显示它们执行成功,只是:noh没有效果。

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

使用BufWritePost也没有效果。

4

1 回答 1

2

这是一种解决方法,但您可以nohlsearch通过 autocmd 进行设置。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
于 2015-11-01T19:11:25.797 回答