vim替代功能不与或运营商合作

时间:2014-12-21 03:27:26

标签: vim substitution

使用:echo substitute("abc","a\|d","e","")命令,我希望得到像ebc这样的答案。但答案仍然是abc。当我使用:s/a\|d/e/替换文字时,我可以获得ebc。我想知道原因。

2 个答案:

答案 0 :(得分:4)

字符串文字有自己的反斜杠转义符(请参阅:help expr-quote),因此您需要加倍反斜杠,以便其中一个转到regexp解析器。

答案 1 :(得分:1)

这是一条评论,但格式化长评论很困难(对不起):)

行情问题总是一场噩梦。

为了减少它,您可以使用“单引号”' strings \ cite(@peterRinker等)并且非常神奇 (\v)修饰符(不需要escapa + |()和更多运算符)。

示例:

:echo substitute("Name Surname",'\v(\w)\w+ (\w+)','\2, \1',"") 

- 姓氏,N