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 用 * 高亮一个单词而不移动光标的主要内容,如果未能解决你的问题,请参考以下文章