4

我不知道這是否可能/明智,但我很想知道是否可以讓我的字符串在javascript文件中有html高亮顯示。我發現PHP中的字符串可能有SQL語法突出顯示,所以我相信這是可能的。vim中的javascript字符串中的HTML語法高亮

但是,我不知道vim腳本,所以對此的任何幫助表示讚賞。我正在使用Better Javascript syntax

PS:如果有可能是一個選項來打開和關閉,同時編輯一個js文件打開它,那將是美妙的

感謝

+0

+ 1,我也希望能夠做到這一點......我有大量的HTML嵌入到JS文件中。 嵌入在我的vimrc中的Python被正確突出顯示,所以這種事情絕對有可能。 – gravitation 2009-09-25 04:49:39

+0

哇!它真的.. ..我從來沒有在我的vimrc中寫任何python,所以從來沒有注意到..大聲笑! – 2009-09-25 04:54:04

回答

3

是的,這是可能的,如果你不介意的一些語法文件黑客攻擊。首先,您需要在Javascript語法文件中包含HTML語法文件 - 有關該信息,請參閱:help syn-include;其次,您需要聲明HTML語法可以在某些元素(即字符串)中找到。第三,如果您想要啓用和禁用它,您可以使這些命令依賴於全局變量,並編寫一些設置或取消設置變量的映射,然後重新加載語法文件。

有關示例有關包括如何工作,看看syntax/html.vim(包括JavaScript和CSS語法文件),syntax/perl.vim(其中包括POD語法文件),或php.vim(包括SQL語法在字符串中突出顯示,有條件的一個全球可變的)。

編輯:做了一些工作,實際上使我的副本發生這種情況。

syntax/javascript.vim頭部,僅低於syn case ignore,加

syn include @javaScriptHTML syntax/html.vim 
unlet b:current_syntax 
syn spell default " HTML enables spell-checking globally, turn it off 

然後加入@javaScriptHTMLcontained=名單javaScriptStringDjavaScriptStringS

最後,你必須編輯syntax/html.vim以防止它試圖如果它是從的JavaScript加載包括syntax/javascript.vim:查找

if main_syntax != 'java' || exists("java_javascript") 

行並將其更改爲

if main_syntax != 'javascript' && (main_syntax != 'java' || exists("java_javascript") 
+0

所以,它會像'語法包含@javaScriptStringS語法/ html.vim',但如果我將它添加到我的javascript.vim,我無法看到任何東西,當我打開一個js文件...什麼是我做錯了? – 2009-09-25 06:04:05

+0

不知何故,我仍然最終得到html.vim遞歸導入:( – gravitation 2009-09-26 02:18:52

+0

謝謝霍布斯,對不起,我回來很晚,但我試過你的解決方案,我確實設法得到我的字符串中的一些HTML顏色,但仍然有2問題中,文件中的所有'>'符號都以紅色背景顯示,如不匹配或某些內容,並且首先在js文件中打開的字符串永遠不會結束......即,第一個'之後的整個文件突出顯示爲js字符串...感謝您的幫助... – 2009-10-09 14:59:35