3
我想在vim中为任务列表创建自定义语法突出显示。vim自定义语法突出显示
任务项目以连字符开头。两种类型的任务项目是相关的:(a)没有'@done'标签的项目。 (b)带有@done标签的项目。 (a)和(b)需要以不同的方式突出显示。
我使用的是taskpaper,它工作正常,但问题是,我试图使它适用于跨越多行的任务项目。例如:
- Regular item (works)
- Completed item @done (works)
- Multi-line item. This item continues on to
the line below. (doesn't work)
- Multi-line completed item. This item continues
on to the line below. (doesn't work). @done
在taskpaper作品的高亮文件前两个,但不是第二双。作为一种变通方法的黑客,我想这对于上述最后一种情况:
syn region multLineDoneItem start="{" end="}" fold
HiLink multLineDoneItem NonText
但现在,我不得不以纪念用大括号多行已完成的项目,像这样:
- {Multi-line completed item. This item continues
on to the line below. (workaround works).}
我已经已经搜索了stackexchange和其他地方。我将不胜感激任何帮助! :)
嗯,谢谢,但问题似乎是,在你上面提到的建议中,一切都以匹配multiLineDoneItem结尾,因为它以“^ _”开头。所以vim在第一个项目(即使它不完整)启动multiLineDoneItem,并且不停止匹配直到文件结束。 :( – PonyEars 2011-03-28 01:44:14
嗯,是的,我绝对简化了这个,试试这个更新,让我知道你是怎么做的,我已经用你的例子测试过了,它似乎工作得很好,也许可以做更多的扩展照顾缓冲区中的任何其他文本,但它应该是一个很好的起点。 – 2011-03-28 18:42:44
哇,这是一个了不起的正则表达式,非常感谢!是的,这是一个很好的起点,所以我要将它标记为已回答。现在有很多案例(我没有提到过),但现在还不行,但在我问你更多问题之前,我会尝试几件事情,但我并不完全明白但是:为什么在multilineDoneItem regexp的末尾有一个'\ ze'?当找到起始模式时,'(\%(\ _^- \)\ @!'应该会停止匹配,对吧? – PonyEars 2011-03-31 01:39:16