2012-12-28 228 views
3

我试图从使用vim脚本函数声明只提取函数名。 出于测试目的,我使用这个简单的例子:VIM替代反斜线

int func(int a); 

在Vim脚本我为此提取函数名称:

:let a = substitute(getline(line('.')), ".*\(func\).*", "\1", "") 

但反向引用不工作。当我回显变量a

:echo a 

它显示整行,即int func(int a);

如何仅使用bacreference或其他方法提取函数名称?

在此先感谢!

回答

8

在双引号内,反斜杠必须转义。要么使用单引号('\1'),要么使用双反斜杠("\\1")。

详见:help expr-string

+0

我怀疑除了替换表达式之外,匹配表达式会出现这种情况,所以在这种情况下OP应该使用单引号。引用的字符串总是引发我一个循环,但通常这些天我只在需要将键击输入到字符串时才使用双引号。 '“\ ”' –

+0

是的。匹配表达式也需要单引号。 – Soumen