2010-07-12 69 views
23

我想知道如何設置vim來爲新的html5元素(即「canvas」和「video」)着色,就像它與現有的「script」,「body 「元素(或其他語言中的保留字,如python的」def「)等等。當前版本來自通常用於終端仿真器的MacPorts。如何將Vim更新爲顏色代碼新的html元素

回答

29

html.vim是Vim諮詢確定哪些標籤將被着色的語法文件。這個位置取決於您安裝的Vim。在這個語法文件中,您會看到許多如下所示的行:

" new html 4.0 tags 
syn keyword htmlTagName contained abbr acronym bdo button col label 
syn keyword htmlTagName contained colgroup del fieldset iframe ins legend 
syn keyword htmlTagName contained object optgroup q s tbody tfoot thead 

這些行定義了語法關鍵字。在這種情況下,他們專門定義HTML標籤名稱。第一行告訴Vim顏色abbr,acronym,bdo,button,collabel標籤。你可以告訴Vim顏色附加標籤的語法如下:

" new html 5 tags 
syn keyword htmlTagName contained video canvas 

現在,Vim將顏色videocanvas標籤和你添加任何額外的關鍵字。

但是,如果您更新內置的html.vim,它將在您下次更新Vim時被覆蓋,因此最佳做法是將您的規則附加到這些內置的規則。爲此,請在.vim文件夾中創建文件夾路徑after/syntax,並在其中放置html.vim

以下@ user240515提到的這個gist中有大量的HTML 5元素和參數。將這些內容粘貼到新創建的html.vim中。

諮詢:help html.vim瞭解更多信息。

+0

謝謝mikemike – unmounted 2010-07-13 23:16:54

+0

@michaelmichael謝謝,但對我來說不起作用,我在他的回答中加入了@johan說的幾句話,但我沒有在'

'標記中突出顯示......例如,文件夾的權限/文件與常規語法文件中的相同。在這裏你有文件的內容:http://pastebin.com/cp8qYDze – ziiweb 2013-04-24 18:03:06

22

感謝這個問題,並感謝您接受的答案!這是新標籤的完整列表添加對HTML 5,因爲它們是在寫作的時候定義:

" new html 5 tags 
syn keyword htmlTagName contained article aside audio canvas command datalist 
syn keyword htmlTagName contained details embed figcaption figure footer header 
syn keyword htmlTagName contained hgroup keygen mark meter nav output progress 
syn keyword htmlTagName contained rp rt ruby section source summary time video 
10

我只是要試試這個:

http://github.com/othree/html5.vim

似乎相當完整。

編輯:我沒有看到任何關於縮進。 :(

EDIT [2012年12月23日]:我做的:)但也許就是後來補充說:https://github.com/othree/html5.vim/tree/master/indent

+0

對於大量的html5 javascript api(「onmousewheel」,「ondragstart」)很好,omnicomplete – unmounted 2010-09-14 09:04:53

+0

安裝它的一種方法是:'git clone https:// github.com/othree/html5.vim「,然後進入該目錄並執行:make install。它會將所有必需的文件安裝到〜/ .vim目錄中。大約需要1秒。 – lepe 2016-05-03 04:27:10

4

壓痕可以使用類似於由michaelmichael用於擴展html.vim語法文件中描述的方法來支持。如果您的~/.vim/indent中沒有html.vim,則可以使用here的內容創建它。內~/.vim/indent/html.vim,你會看到一個函數調用集組裝,看起來像下面的HTML元素的名稱列表:

" [-- <ELEMENT ? - - ...> --] 
call <SID>HtmlIndentPush('a') 
call <SID>HtmlIndentPush('abbr') 
call <SID>HtmlIndentPush('acronym') 
call <SID>HtmlIndentPush('address') 
" ...and many more... 

這些行定義將觸發基本標籤縮進標記。使用任何您希望觸發縮進的HTML5標記擴展此列表。我添加了下面這個列表的末尾:

" New HTML 5 elements 
call<SID>HtmlIndentPush('table') 
call<SID>HtmlIndentPush('article') 
call<SID>HtmlIndentPush('aside') 
call<SID>HtmlIndentPush('audio') 
call<SID>HtmlIndentPush('canvas') 
call<SID>HtmlIndentPush('command') 
call<SID>HtmlIndentPush('datalist') 
call<SID>HtmlIndentPush('details') 
call<SID>HtmlIndentPush('embed') 
call<SID>HtmlIndentPush('figcaption') 
call<SID>HtmlIndentPush('figure') 
call<SID>HtmlIndentPush('footer') 
call<SID>HtmlIndentPush('header') 
call<SID>HtmlIndentPush('hgroup') 
call<SID>HtmlIndentPush('keygen') 
call<SID>HtmlIndentPush('mark') 
call<SID>HtmlIndentPush('meter') 
call<SID>HtmlIndentPush('nav') 
call<SID>HtmlIndentPush('output') 
call<SID>HtmlIndentPush('progress') 
call<SID>HtmlIndentPush('rp') 
call<SID>HtmlIndentPush('rt') 
call<SID>HtmlIndentPush('ruby') 
call<SID>HtmlIndentPush('section') 
call<SID>HtmlIndentPush('source') 
call<SID>HtmlIndentPush('summary') 
call<SID>HtmlIndentPush('time') 
call<SID>HtmlIndentPush('video') 

縮進現在來對上面列出的HTML5標籤觸發。

0

syntax/html.vim文件附帶vim(8.0)是非常過時。保持語法高亮更新的好方法是使用一個維護良好的插件,例如vim-polygot,它保持更新。這是html.vim syntax支持,canvasvideo, sectionmain(其他答案不支持),僅舉幾例。

相關問題