【问题标题】:Vim Syntax-File, Comment after brace not styledVim 语法文件,大括号后的注释未设置样式
【发布时间】:2015-09-05 15:10:28
【问题描述】:

我在我的语法文件中有以下三行来设置 cmets 的样式。注释以# 开头,允许内联或单独一行。

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

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

我尝试创建这样的规则:

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

但这会将整行设置为注释。

即使在# 之前有一个字符,我必须怎样做才能使其样式正确?

编辑

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

正确突出显示# 之后的文本,# 之前的文本未设置为注释样式,但# 未设置为注释样式。

【问题讨论】:

    标签: vim vim-syntax-highlighting


    【解决方案1】:

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

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

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

    这是一个简单的情况,例如,它不处理在字符串中包含尖锐符号的情况(如果您的语法中有一些字符串)。要额外处理此问题,您可以添加:

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

    【讨论】:

    • 抱歉回复晚了。您的第一个解决方案 #.*$' styles everything after the #` 作为评论 - 但没有 # 本身。您编写的其他两个解决方案也不起作用。
    猜你喜欢
    • 2016-10-03
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    相关资源
    最近更新 更多