匹配vim寄存器的内容

时间:2014-05-05 12:16:47

标签: regex vim

我有一段像这样的代码

int a=8;
cout<<"a is :"<<a<<endl;     // show what is the value of a
a=a*a;
string b="ice";              // b is ice
const char* c=b.c_str();     

此代码以完全相同的方式在许多地方重复。我想找到这段代码的所有出现。我以为我可以复制代码并将其放入其中一个寄存器中,并使用寄存器的内容来执行匹配。文本可以包含任何特殊字符,在匹配时,需要将其视为普通文本。是否可以使用寄存器内容进行匹配?用其他方式我可以做到这一点?

1 个答案:

答案 0 :(得分:2)

插件

通过选择线条,然后搜索视觉选择,您变得更加容易,并且不会破坏寄存器。有几个插件可以将内置的普通模式*命令扩展为可视模式,也可以是我的SearchHighlighting plugin。 (插件页面包含指向其他插件的链接。)

手动

如果您想通过寄存器手动执行此操作,请使用非常狂野\V)模式,并转义特殊字符。要将(转义的)寄存器内容插入命令行,请使用表达式寄存器插入寄存器<C-R>

/\V<C-R>=substitute(escape(@@, '/\'), '\n', '\\n', 'g')<CR><CR>