Sublime语法匹配文件的第一行

时间:2016-06-23 01:05:03

标签: regex syntax sublimetext3

我正在尝试将文件的第一行与sublime 3语法高亮匹配,假设它没有前导数字。

    <dict>
        <key>comment</key>
        <string>Matchs the first line comment</string>
        <key>match</key>
        <string>\A^[^0-9].*</string>
        <key>name</key>
        <string>comment</string>
    </dict>

该表达式适用于ctrl-f,但在语法文件中使用时会突出显示整个文档。

1 个答案:

答案 0 :(得分:0)

首先,使用yaml变体,这样您就可以了解自己在做什么。

answer:将main作为您的第一行模式。一旦看到任何一行的末尾,就切换到另一种模式。永远不要回到主模式-其他线路模式现在是您的上帝。推入和弹出应该如预期的那样工作,因为我们使用set而不是push(因此main不再位于堆栈中)。

 main: # aka first line mode
  - match: '$'
    set: other.lines
  - match: '.*'
    scope: first.line

 other.lines:
  - match: '.*'
    scope: every.other.line

对于数字位,您可以将其添加到$ match中,作为替代第一行交易破坏者正则表达式

  - match: '^\d|$'
    set: other.lines

对于奖励积分,如果您只想匹配第一行的某些格式,请在确定范围后设置所有格式,然后再添加$规则。如果您想一直忽略空白,则需要先设置一下,然后看到无效的第一行,然后再设置为正常的正文匹配器。例如,您只想在第一行显示foo,foobar或foobaz时才突出显示第一行。也许像...

 main:
  - match: 'foo(bar|baz)?'
    scope: valid.first.line
    set: other.lines # done with the first line
  - match: '(?=^\s*\S)'
    set: other.lines # looked ahead, saw non blank line, wasnt valid first line