当我使用g*或*或g#时,它会触发对光标下的单词的搜索。但是,光标会移动到该单词的下一个/上一个匹配项。有没有方法可以在不移动光标的情况下搜索当前单词?这很烦人,因为我经常想按
g*
*
g#
:.,+5s/foo/bar/g
fumotvh31#
您可以Map:
nnoremap # #N nnoremap * *N
cetgtptt2#
noremap * :let @/ = "\\<<C-r><C-w>\\>"<cr>:set hlsearch<cr>
它只是将搜索模式设置为光标下的整个单词,然后触发对搜索突出显示的更新
pb3skfrl3#
有没有一种方法可以在不移动光标的情况下搜索当前单词?*、#和friends的全部意义在文档中已经非常清楚了:“向前搜索”或“向后搜索”。你的问题似乎是你使用那些命令不是为了它们的预期目的而是为了一个副作用,大概是突出显示光标下单词的所有出现。由于没有内置的命令,您需要自己Map它:
#
nnoremap <key> *`` nnoremap <anotherkey> #`` ...
bq3bfh9z4#
不按 * 键填充搜索模式,而是使用CTRL-R CTRL-W将单词直接复制到命令行。即:
:.,+5s/<C-R><C-W>/bar/g
4szc88ey5#
将*/#/g*等的功能更改为 * 非 * 跳转(特别是在没有给定[count]的情况下)是一个频繁的请求,因此,过多的插件会改变Vim的默认行为,我的SearchHighlighting plugin就是一个这样的插件。(插件页面上有许多其他插件的链接,也可以试用。)@romainl给出的答案是一个最小化的解决方案,它有一些大多数插件都能避免的缺点(例如屏幕闪烁,可能会改变窗口视口)。
[count]
j9per5c46#
我使用下面的Map来搜索当前单词并保持光标的位置:
nnoremap <expr> * ':%s/'.expand('<cword>').'//gn<CR>``'
额外的好处是我们还可以计算火柴的数量。
6条答案
按热度按时间fumotvh31#
您可以Map:
cetgtptt2#
它只是将搜索模式设置为光标下的整个单词,然后触发对搜索突出显示的更新
pb3skfrl3#
有没有一种方法可以在不移动光标的情况下搜索当前单词?
*
、#
和friends的全部意义在文档中已经非常清楚了:“向前搜索”或“向后搜索”。你的问题似乎是你使用那些命令不是为了它们的预期目的而是为了一个副作用,大概是突出显示光标下单词的所有出现。由于没有内置的命令,您需要自己Map它:
bq3bfh9z4#
不按 * 键填充搜索模式,而是使用CTRL-R CTRL-W将单词直接复制到命令行。即:
4szc88ey5#
将
*
/#
/g*
等的功能更改为 * 非 * 跳转(特别是在没有给定[count]
的情况下)是一个频繁的请求,因此,过多的插件会改变Vim的默认行为,我的SearchHighlighting plugin就是一个这样的插件。(插件页面上有许多其他插件的链接,也可以试用。)@romainl给出的答案是一个最小化的解决方案,它有一些大多数插件都能避免的缺点(例如屏幕闪烁,可能会改变窗口视口)。
j9per5c46#
我使用下面的Map来搜索当前单词并保持光标的位置:
额外的好处是我们还可以计算火柴的数量。