我试图取一个字符串,将其复制到寄存器中,然后对其进行搜索替换。 ergo @user = User.find(params[:id])
我不断获得E486 Pattern not found
我很确定我能找到一种方法来逃避适当的角色并让它以这种方式工作。这很好,但在这种情况下,我从寄存器加载字符串" a"。
:%s/<c-r>a/foo/gc
有没有办法让一些人逃脱整个字符串来做这件事?
答案 0 :(得分:1)
您可以通过向模式添加\V
将正则表达式模式更改为非常强大。在这种模式下,唯一的特殊字符是反斜杠。如果你没有任何一个,你可以正常插入寄存器。 (或者手动转义)
:%s/\V<c-r>a/foo/gc
如果要自动转义它们,可以使用表达式寄存器
将寄存器传递给转义函数:%s/\V<c-r>=escape(@a, '\')<cr>/foo/gc
相关帮助部分为:h \V
和:h c_CTRL-R_=
答案 1 :(得分:0)
就个人而言,我会得到一个visual star插件(那里很少)。关于这个问题有一个很好的Vimcast:Search for the selected text。然后,我会使用:s//foo/gc
来完成您的目标。