我正在尝试将文件的第一行与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,但在语法文件中使用时会突出显示整个文档。
答案 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