4

我已经在我的 .vimrc 中突出显示与当前光标上的单词匹配的所有单词

autocmd CursorMoved * silent! exe printf('match Search /\<%s\>/', expand('<cword>'))

但有时它有点烦人,所以我想映射一个键来打开或关闭它,例如<F10>

我怎样才能做到这一点?

4

2 回答 2

4

清除自动命令并删除突出显示:

nmap <f8> :autocmd! CursorMoved<cr> :call clearmatches()<cr>

并使用不同的键重新打开它:

nmap <f9> :autocmd CursorMoved * silent! exe printf('match Search /\<%s\>/', expand('<cword>'))<cr>
于 2013-04-14T14:20:16.240 回答
1

将以下内容放入您的 .vimrc 中:

let g:toggleHighlight = 0
function! ToggleHighlight(...)
  if a:0 == 1 "toggle behaviour
    let g:toggleHighlight = 1 - g:toggleHighlight
  endif

  if g:toggleHighlight == 0 "normal action, do the hi
    silent! exe printf('match Search /\<%s\>/', expand('<cword>'))
  else
    "do whatever you need to clear the matches
    "or nothing at all, since you are not printing the matches
  endif
endfunction

autocmd CursorMoved * call ToggleHighlight()
map <F8> :call ToggleHighlight(1)<CR>

这个想法是,如果您使用参数调用该函数,它会将行为更改为打印/不打印。自动命令只使用最后一个设置,因为那里的函数在没有参数的情况下被调用。

于 2013-04-14T15:08:24.980 回答