清除 autocmd BufWrite 上的搜索突出显示
Clear search highlight on autocmd BufWrite
我尝试了这三个问题中的大部分建议:
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 上,所以我尝试了多种方法,none 其中有效:
function! RemoveHighLight()
:noh
endfunction
autocmd BufWrite * :call RemoveHighLight()
autocmd BufWrite * :noh
autocmd BufWrite * :execute "normal! :noh\<cr>"
在函数中调试echom
s和adebug\<esc>
,在第三个autocmd中显示它们执行成功,只是: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
我尝试了这三个问题中的大部分建议:
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 上,所以我尝试了多种方法,none 其中有效:
function! RemoveHighLight()
:noh
endfunction
autocmd BufWrite * :call RemoveHighLight()
autocmd BufWrite * :noh
autocmd BufWrite * :execute "normal! :noh\<cr>"
在函数中调试echom
s和adebug\<esc>
,在第三个autocmd中显示它们执行成功,只是: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