如何在Vim中搜索光标下单词且不移动光标?
解决Vim搜索光标下单词不移动光标的问题
哈哈,这个痛点我太懂了!每次按*搜索完还要跳回来,确实麻烦。给你几个实用的解决方案,完美解决这个问题:
方法一:自定义快捷键,直接设置搜索模式不跳转
在你的~/.vimrc(或者init.vim,如果你用Neovim)里添加以下映射:
nnoremap <silent> <Leader>* :let @/='\<'.expand('<cword>').'\>'<CR> nnoremap <silent> <Leader># :let @/='\<'.expand('<cword>').'\>'<CR>:set hlsearch?<CR>
<Leader>*是你可以自定义的快捷键(比如换成<F3>之类的),按下后会把光标下的完整单词设为当前搜索模式,同时光标完全不动\<和\>是单词边界符号,确保只匹配完整单词,避免部分匹配的情况- 如果你的Vim开启了
hlsearch,所有匹配项会自动高亮,不用额外操作
方法二:直接在替换命令里引用光标下的单词
其实你想要的* :.,+5s/foo/bar/g操作,完全可以一步完成,根本不需要先搜索!在命令行模式下输入:
:.,+5s/\<<C-r><C-w>\>/bar/g
<C-r><C-w>是Vim命令行的快捷键,会直接插入光标下的当前单词- 同样用
\<和\>确保匹配完整单词,这样你不用离开当前光标位置,就能完成指定范围内的替换
方法三:临时标记位置(应急用)
如果只是偶尔需要,不想改配置,可以先标记当前光标位置:
m'
然后按*搜索,完成操作后再用:
`'
回到之前标记的位置。不过这个方法多了两步,不如前两种高效,适合临时应急。
内容的提问来源于stack exchange,提问作者Oskar Granlund
相关产品推荐
相关产品推荐

