在 vim 中搜索视觉选择

Search for visual selection in vim

当我只是搜索一个词时,使用 * 效果很好,但我经常想搜索代码中出现的短语或文件名,如果只是在视觉上 select 字符串并能够点击 *# 来搜索它。事实证明这比我希望的要复杂。我从这个开始:

vnoremap * y/\<<c-r>"<cr>\>

但是如果我的字符串中有一个正斜杠,这就会中断。我试着让它自动用 \/ 组合替换正斜杠,如下所示:

vnoremap * yo<esc>pV:s-/-\/-ge<cr>0D"_dd/\<<c-r>"<cr>\>
" y                - yank the text
" o<esc>           - open a new line
" p                - paste the string
" V:s-/-\/-ge<cr> - replace / with \/
" 0D"_dd           - Grab the string and get rid of the line I just created
" /\<<c-r>"<cr>\>  - Do the search

这有(至少)两个问题:如果我不能编辑当前文件,它就不会工作;如果我试图在评论中抓取文本,它就会崩溃。当我在注释行上使用 o 时,新行以注释开头,这意味着当我 运行 0D 时它不会挖出正确的文本。有没有办法让这项工作按我想要的方式进行?

尽管我即将给出的解决方案也存在,但链接问题中的最佳答案没有进行任何转义。我使用与此非常相似的东西:

https://github.com/nelstrom/vim-visual-star-search