我们假设我有一条线:
a|b|c
我想运行一个正则表达式将其转换为:
a\|b\|c
在我熟悉的大多数正则表达式引擎中,像s%\|%\\|%g
这样的东西应该可行。如果我在Vim中尝试这个,我得到:
\|a\||\|b\||\|c
事实证明,我在输入这个问题时发现了答案。无论如何,我会用我的解决方案提交它,因为我有点惊讶搜索没有发现任何重复。
答案 0 :(得分:13)
vim有自己的正则表达式语法。在vim帮助文档中与PCRE进行了比较。
除此之外,vim没有魔法/魔法/魔法模式。 :h magic
检查表格。
默认情况下,vim具有magic
模式。如果您想在问题中设置:s
命令,只需激活very magic
:
:s/\v\|/\\|/g
基本上这是一种RTFM的事情......
答案 1 :(得分:6)
在这方面,Vim与PCRE相反:|
是一个文字管道字符,\|
serving as the alternation operator。我找不到合适的转义序列,因为管道符不需要转义。
以下命令适用于我的示例中的行:
:. s%|%\\|%g
答案 2 :(得分:2)
如果您使用very-magic
(使用\v
),您将对大多数特殊字符(不包括vim细节)具有Perl / pcre行为:
:s#\v\|#\\|#g