在光标下搜索单词

时间:2018-04-30 09:39:03

标签: vim

当我使用g *或*或g#时,它将触发搜索光标下的单词。但是,光标移动到该单词的下一个/上一个出现位置。有没有办法在没有光标移动的情况下搜索当前单词?

这很烦人,因为我经常要按

  1. *
  2. :,+ 5秒/富/酒吧/克
  3. 但是这个问题迫使我去做

    1. *
    2. 然后转移+ *(我想跳过这个)
    3. 我的搜索和替换。

5 个答案:

答案 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