繁体   English   中英

当用于引用模式时,+ 号在 vim 模式中意味着什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM