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