在Vim中突出显示正则表达式的语法

Ben*_*ner 10 regex vim syntax-highlighting vim-syntax-highlighting

每当我看到任何复杂的正则表达式时,我的眼睛就会开始流水.是否有任何现有的解决方案为正则表达式中的不同类型的符号赋予不同的颜色?

理想情况下,我希望对文字字符,转义序列,类代码,锚点,修饰符,前瞻等进行不同的突出显示.显然,语法在不同语言之间略有不同,但这是稍后要处理的皱纹.

如果这可以某种方式与语法突出显示Vim与使用正则表达式的任何语言共存时的加分点.

这是存在于某个地方,还是我应该在那里制作它?

Kim*_*son 6

正则表达式可能不是语法突出显示的,但您可以通过其他方式考虑使它们更具可读性.

有些语言允许您跨多行(perl,C#,Javascript)打破正则表达式.一旦你这样做,你可以格式化它,使普通人的眼睛更具可读性. 这是我的意思的一个例子.

您还可以在某些语言中使用此处介绍高级(?x)语法.这是一个例子:

(?x:          # Find word-looking things without vowels, if they contain an "s"
   \b                       # word boundary
   [^b-df-hj-np-tv-z]*      # nonvowels only (zero or more)
   s                        # there must be an "s"
   [^b-df-hj-np-tv-z]*      # nonvowels only (zero or more)
   \b                       # word boundary
)
Run Code Online (Sandbox Code Playgroud)

编辑:

正如Al所指出的,如果所有其他方法都失败,您也可以使用字符串连接.这是一个例子:

regex = ""          # Find word-looking things without vowels, if they contain an "s"
   + "\b"                       # word boundary
   + "[^b-df-hj-np-tv-z]*"      # nonvowels only (zero or more)
   + "s"                        # there must be an "s"
   + "[^b-df-hj-np-tv-z]*"      # nonvowels only (zero or more)
   + "\b";                      # word boundary
Run Code Online (Sandbox Code Playgroud)

  • +1:这是一个很好的方法.当您在本机Vim中编写函数时,不支持详细的RE,但是如果您想这样做,您可以使用字符串连接来实现相同的功能. (2认同)