假设我有一条线:
a|b|c
我想运行一个正则表达式将其转换为:
a\|b\|c
在我熟悉的大多数正则表达式引擎中,类似的东西s%\|%\\|%g
应该可以工作。如果我在 Vim 中尝试这个,我会得到:
\|a\||\|b\||\|c
事实证明,我在输入这个问题时发现了答案。无论如何,我会用我的解决方案提交它,因为我有点惊讶搜索没有出现任何重复项。
vim 有自己的正则表达式语法。vim 帮助文档中有一个与 PCRE 的比较(请参阅 参考资料:help perl-patterns
)。
除此之外,vim 没有魔法/魔法/非常魔法模式。:h magic
检查表。
默认情况下,vim 有magic
模式。如果您想让:s
问题中的命令起作用,只需激活very magic
:
:s/\v\|/\\|/g
如果您使用very-magic
(use \v
),您将对大多数特殊字符(不包括 vim 细节)具有 Perl/pcre 行为:
:s#\v\|#\\|#g