当我使用g *或*或g#时,它将触发搜索光标下的单词。但是,光标移动到该单词的下一个/上一个出现位置。有没有办法在没有光标移动的情况下搜索当前单词?
这很烦人,因为我经常要按
但是这个问题迫使我去做
答案 0 :(得分:3)
有没有办法在没有光标移开的情况下搜索当前单词?
*
,#
和朋友的重点在文档中非常清楚:“向前搜索”或“向后搜索”。您的问题似乎是您使用这些命令不是为了预期目的,而是为了副作用,可能会突出显示光标下所有出现的单词。
由于没有内置命令,您需要自己映射:
nnoremap <key> *``
nnoremap <anotherkey> #``
...
答案 1 :(得分:1)
而不是按 * 来填充搜索模式,而不是使用CTRL-R CTRL-W将单词直接复制到命令行。即:
:.,+5s/<C-R><C-W>/bar/g
答案 2 :(得分:0)
经常将*
/ #
/ g*
等的功能更改为 not 跳转(尤其是没有给定的[count]
时)请求。因此,大量的插件通常会与其他与搜索相关的命令一起更改Vim的默认行为。我的SearchHighlighting plugin是这样的插件之一。 (插件页面上有许多其他插件的链接,这些插件也可以尝试。)
@romainl可接受的答案是一种最小的解决方案,具有大多数插件可以避免的一些缺点(例如,屏幕闪烁,可能会更改窗口视口)。
答案 3 :(得分:0)
我使用下面的映射来搜索当前单词并保持光标的位置:
nnoremap <expr> * ':%s/'.expand('<cword>').'//gn<CR>``'
额外的好处是我们也可以计算匹配数。
答案 4 :(得分:0)
您可以映射:
nnoremap # #N
nnoremap * *N