Vim替换反斜杠

3

我正在尝试使用vim脚本从函数声明中提取函数名。 为了测试,我使用了这个简单的示例:

int func(int a);

在vim脚本中,我通过以下方式提取函数名:
:let a = substitute(getline(line('.')), ".*\(func\).*", "\1", "")

但是反向引用没有起作用。当我使用echo命令输出变量a时,它并没有显示出正确的结果。
:echo a

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

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

提前致谢!

1个回答

8

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

有关详细信息,请参见:help expr-string


我怀疑这种情况不仅适用于匹配表达式,还适用于替换表达式,所以在这种情况下,原贴的作者应该始终使用单引号。引用字符串总是让我感到困惑,但一般来说,现在我只有在需要将按键输入到字符串中时才使用双引号,例如 "\<Esc>" - dash-tom-bang
是的,确实如此。匹配表达式也需要单引号。 - Soumen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接