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

时间:2011-07-29 09:04:03

标签: vim

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

我该怎么做?

提前致谢。

4 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

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

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

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

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

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

答案 2 :(得分:2)

我建议使用https://github.com/thinca/vim-visualstar,因为您可以使用 * 进行搜索,但如果选择了某些选项,则会遇到问题。

答案 3 :(得分: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>