我有一个以下格式的文件:
Abc Task Header:
- task detail a
- task detail b
Def Task Header:
- task detail c:
- task sub detail c1
- task sub detail c2
- task detail d
我想让我的语法文件匹配(并突出显示)以下几行:
Abc任务标题:
Def任务标题:
我不希望以下行匹配并突出显示:
任务明细c:
注意事项:
Task Header
...这只是一个示例名称)-
(短划线)字符开头。-
(破折号)。这也是StackOverflow编辑器的副作用。我尝试了一些东西,但它们似乎没有正常工作。
e.g。
syn match myTask "[A-Z]*:$"
这导致突出显示任务标题的最后一个单词以及冒号。它还突出显示具有冒号的任何任务详细信息。
syn match myTask "[^-].*[A-Z].*:$"
这会突出显示整个任务标题和冒号(想要的行为),但会突出显示包含冒号的任何详细信息。它没有突出显示短划线,但突出显示其余部分。
有什么想法吗?
由于
更新:
嗯,Billy Moon的例子直截了当,涵盖了一直是真实的情景。然而,还有一些其他答案也有效(感谢YGomez)。我会在这里添加一些样本,基于这些或者我从其他答案得到一些灵感后得到的工作(如果其他人正在寻找未来类似问题的解决方案);
syn match myTask "^[^-].*:$"
syn match myTask "[A-Z]*:$"
syn match myTask "^\s*[A-Z].*:$"
// These two are equivalent.
syn match myTask "^\s*[A-Za-Z].*:$"
syn match myTask "^\s*\c\w.*:$"
答案 0 :(得分:3)
试试这个:
syn match myTask "^[^-].*:$"
答案 1 :(得分:1)
您可以尝试:
syn match myTask "^[A-Z].*:$"
你说他们都以字母开头,所以不要检查它是否以-
开头,而是检查它以字母开头的更强的条件(在上面的例子中,是一个大写字母)。
编辑:更多可能的情况:
如果你之前可以有空格:
syn match myTask "^\s*[A-Z].*:$"
如果它也可以是小写的:
syn match myTask "^\s*[A-Za-z].*:$"