2015-06-19 44 views
1

我有以下三行来在我的语法文件中注释样式。评论从#开始,允许内联或单独行。Vim语法 - 文件,大括号不是样式的注释

syn keyword  myTodo   contained TODO FIXME 
syn match  myComment  "^#.*" contains=myTodo 
syn match  myComment  "\s#.*"ms=s+1 contains=myTodo 

只要在#之前没有字符(包括括号等),它就会工作。

我tryed来创建这样一个规则:

syn match  myComment  ".*#.*"ms=s+1 contains=myTodo 

但这风格全行注释。

即使在#之前有一个字符,我还需要做些什么才能使它的样式正确?

编辑

syn match  myComment  "\s*#.*"ms=s+1 contains=myTodo 

Hightlights #正确后,文本和文本#之前没有风格的评论,但#没有风格的评论。

回答

0

如果我理解的很好,在尖号之前不需要描述匹配。

,如果你只是试试这个,会发生什么:

syn keyword  myTodo   contained TODO FIXME 
syn match  myComment  "#.*$" contains=myTodo 

这是一个简单的情况下,不处理,其中一个尖锐的标志被纳入例如一个字符串的情况下(如果在某些字符串您句法)。为了解决这个问题,您可以添加:

syn match  Constant  /\v"([^\\]|\\.)*"/ 
syn match  Normal  /^.*$/ contains=Constant,myComment 
+0

对不起,对于最近的回复。你的第一个解决方案'#。* $'将'#'后面的所有内容都作为注释 - 但本身没有##。你写的其他两种解决方案也不起作用。 – ap0