从perl的角度来看vim regexps:用反斜杠转义哪些特殊字符

时间:2009-11-05 14:35:05

标签: vim escaping vi

想象一下,我们必须在vi / vim中构建一个正则表达式。我们必须用反斜杠逃脱哪些特殊字符?

特殊字符是指以下字符:{} |() - [] + *。^ $?

似乎我们必须逃避:{|()+?

并保持原样:} ^ $ *。[] -

感谢。

P.S。 AFAIK,我们没有'?' vi / vim中的字符,但是'='代替,也应该用反斜杠转义。

3 个答案:

答案 0 :(得分:3)

我认为magic characters上的Vim文档会为您提供明确的清单。

答案 1 :(得分:2)

在vim中:

  

:帮助魔术

答案 2 :(得分:1)

我认为无论vim的magic设置如何,最简单的方法是

let re = '\V' . escape(fixed_string, '\')

\V从RE中的那个点开始完全禁用魔法。这意味着任何前面没有单个反斜杠的东西(好的,技术上是奇数个反斜杠)都是正常的字符。由于我们在固定字符串中转义任何反斜杠,因此不能包含任何魔术字符。

请记住,在\V生效的情况下,您必须使用反斜杠作为任何RE元字符的前缀。因此,如果您正在寻找一条完全由固定字符串组成的行,您可以

let full_line_re = '\V\^' . escape(fixed_string, '\') . '\$'

另请注意,vim的ignorecasesmartcase设置会影响RE行为。 \C(区分大小写)和\c(不区分大小写)开关的工作方式与\V相同:它们将覆盖跟随它们的任何正则表达式部分的设置。< / p>