Vim 用 * 高亮一个单词而不移动光标

Posted

技术标签:

【中文标题】Vim 用 * 高亮一个单词而不移动光标【英文标题】:Vim highlight a word with * without moving cursor 【发布时间】:2014-07-04 22:23:36 【问题描述】:

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

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

noremap * mP*N`P 

有没有更好的解决方案?

我注意到 vim 在执行命令后并不能很好地保持光标的位置。例如,当我切换缓冲区时,光标会回到行首。

对此进行全局设置可能会很有趣。

【问题讨论】:

此 wiki 页面对此有一个部分:vim.wikia.com/wiki/Highlight_all_search_pattern_matches 【参考方案1】:

我的SearchHighlighting plugin 更改了* 命令,使其不会跳转到下一个匹配项;您仍然可以通过提供[count] 来跳转。它还将该命令扩展到可视模式(Vim 中没有的另一个经常请求的功能)等等。

【讨论】:

您的插件没有 bundle/vundle github 存储库?【参考方案2】:

详细here,可以这样定义一个map:

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

【讨论】:

如果你想用星号代替 F8:nnoremap * :let @/ = '\<'.expand('<cword>').'\>'\|set hlsearch<C-M>【参考方案3】:

不幸的是,没有全局设置。

“高亮不移动”问题的一个常见解决方案是:

nnoremap * *``

“切换缓冲区时保持光标位置”问题的一种解决方案是:

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

【讨论】:

以上是关于Vim 用 * 高亮一个单词而不移动光标的主要内容,如果未能解决你的问题,请参考以下文章

vim高亮查找与取消

Vim 匹配相同的单词并高亮

vim常用命令

分享30个常用的Vim命令

vim liunx目录(又忘写了)

[转帖]vim搜索及高亮取消