当我只是在搜索一个单词时,使用*
很有效,但我经常想搜索出现在代码中的短语或文件名,只要目视选择字符串就可以了。能够点击*
或#
进行搜索。事实证明这比我希望的更复杂。我从这开始:
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
时,它不会获取正确的文本。有没有办法让这项工作按我想要的方式进行?
答案 0 :(得分:2)
链接问题中的最佳答案没有进行任何转义,尽管我即将提供的解决方案也存在。我使用的东西非常相似: