Vim如何在不移动光标的情况下使用*高亮显示单词?

14

我希望能够在不跳转到下一个结果的情况下突出显示光标下的单词。

我找到的解决方案使用了一个标记:

noremap * mP*N`P 

有更好的解决方案吗?

我注意到vim在执行命令后无法保持光标位置,例如,当我切换缓冲区时,光标会回到行的开头。

也许可以设置一个全局选项来解决这个问题。


这个维基页面有一个关于此的部分:http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches - Randy Morris
3个回答

15

很遗憾,这方面没有全局设置。

解决“不移动但突出显示”的常见方法是:

nnoremap * *``

解决“在切换缓冲区时保留光标位置”的方法之一是:

augroup CursorPosition
  autocmd!
  autocmd BufLeave * let b:winview = winsaveview()
  autocmd BufEnter * if(exists('b:winview')) | call winrestview(b:winview) | endif
augroup END

8

此处所述,您可以按以下方式定义映射:

:nnoremap <F8> :let @/='\<<C-R>=expand("<cword>")<CR>\>'<CR>:set hls<CR>

注:该代码段是关于在Vim编辑器中定义映射的操作。

1
如果你想使用星号代替 F8:nnoremap * :let @/ = '\<'.expand('<cword>').'\>'\|set hlsearch<C-M> - Llopeth

3

我的SearchHighlighting插件修改了*命令的行为,使其不会跳转到下一个匹配项;您仍然可以通过提供[count]来跳转。它还将该命令扩展到可视模式(这是Vim中另一个经常请求但不支持的功能),以及其他一些功能。


你的插件没有bundle/vundle的github仓库吗? - nowox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接