如何在Vim中以可视模式选择单词后搜索单词?

问题描述 投票:0回答:4

假设我在视觉模式中选择了一个单词。现在我想在文档中搜索该单词。

我怎样才能做到这一点?

提前致谢。

vim
4个回答
3
投票

按y(之后你将从视觉模式退出)然后按/ Ctrl + r然后“结束命中输入。

您可以使用它绑定//以执行此操作:

:vmap // y/<C-R>"<CR>

如果选择特殊字符,最好使用它

:vmap <silent> // y/<C-R>=escape(@", '\\/.*$^~[]')<CR><CR>

7
投票

如果它只是一个单词,您甚至不必选择它。只需将光标放在单词上,然后按*(或#向后搜索)。请注意,此搜索仅匹配整个单词。要允许搜索foo以匹配foobar,请使用g *或g#。


2
投票

我推荐https://github.com/thinca/vim-visualstar,因为你可以使用*进行搜索,但有一些选择可能会遇到问题。


0
投票

我在我的~/.vimrc中有这个:

" Search for visually-selected text, forwards or backwards.
vnoremap <silent> * :<C-U>
  \let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR>
  \gvy/<C-R><C-R>=substitute(
  \escape(@", '/\.*$^~['), '\_s\+', '\\_s\\+', 'g')<CR><CR>
  \gV:call setreg('"', old_reg, old_regtype)<CR>
vnoremap <silent> # :<C-U>
  \let old_reg=getreg('"')<Bar>let old_regtype=getregtype('"')<CR>
  \gvy?<C-R><C-R>=substitute(
  \escape(@", '?\.*$^~['), '\_s\+', '\\_s\\+', 'g')<CR><CR>
  \gV:call setreg('"', old_reg, old_regtype)<CR>
© www.soinside.com 2019 - 2024. All rights reserved.