[英]What does the + sign mean in vim patterns when used to quote a pattern?
vim 帮助示例为语法语句提供了这一行:
:syntax region String start=+"+ skip=+\\"+ end=+"+
这里的+
号是引用的替代品吗? 我在有关模式的帮助页面中找不到对此的引用。
模式介绍,请参阅:h pattern.txt
。 与第 10 章的示例( :h:match
)一样,可以使用:match MyGroup /TODO/
代替//
任何字符来标记模式的开始和结束。
就像你的问题( :h syntax.txt
),这在第 8 章( :h:syn-pattern
)中解释:
在语法命令中,模式必须由两个相同的字符包围。 这就像它适用于 ":s" 命令。 最常用的是双引号。 但是如果模式包含双引号,您可以使用模式中未使用的另一个字符。 例子:
:syntax region String start=+"+ end=+"+ skip=+\\"+
就像:s
命令一样,请参阅:h:s
和:h pattern-delimiter
,好处和便利是转义字符的处理。 以:s
命令为例,更方便大家快速验证。
如果你想用b
替换a
,你可以使用:s/a/b/
或:s+a+b+
。 但是如果你想用//
替换/
,使用分隔符/
require :s/\//\/\//
,我们可以将分隔符/
更改为+
( :s+\/+\/\/+
)。 其实这里我们已经不需要转义/
了,所以最后只有一个简洁:s+/+//+
。
回到你的问题,如果模式包含很多双引号,我们可以使用模式中未使用的另一个字符作为分隔符(例如+
),否则模式中的每个双引号都需要转义。
没有上下文就不会提供您问题中的示例命令。 它作为其正上方段落的说明提供:
在语法命令中,模式必须由两个相同的字符包围。 这就像它适用于 ":s" 命令。 最常用的是双引号。 但是如果模式包含双引号,您可以使用模式中未使用的另一个字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.