Vim中.ejs文件的语法高亮显示

使vim突出显示ejs(http://embeddedjs.com/)文件的最佳方法是什么? 是否有可能为一般的文件设置html突出显示,并在JavaScript中突出显示<%%>中的部分? 感谢你的帮助!

学分去@inkedmn只是想指出,HTML绑定工作方式更好,因此把这个在你的〜/ .vimrc文件:

au BufNewFile,BufRead *.ejs set filetype=html 

这是我今天鞭打的东西(对eruby脚本做了一些修改)。 它需要安装vim-javascript插件。

https://github.com/briancollins/vim-jst

我将这个语法文件直接下载到〜/ .vim / syntax中的效果最好

如果你想让它们像常规的.js文件一样突出显示,你可以把它添加到你的.vimrc文件中:

 au BufNewFile,BufRead *.ejs set filetype=js 

不是100%肯定这就是你以后 – 希望它有帮助。

对于在适当的地方使用javascript和html语法的解决scheme(不依赖于任何第三方javascript插件),需要一个ftdetect文件,该文件在带有.ejs扩展名的文件加载到ejs语法文件时运行autocmd

如果你不关心它是如何工作的,我已经把一个软件包放在了一起,你可以从这里获取github。 如果使用Vundle只需将其添加到您的.vimrc中:

 Bundle 'nikvdp/ejs-syntax' 

要自己做,请在~/.vim文件夹中创build两个文件:

ftdetect文件: ~/.vim/ftdetect/ejs.vim

 autocmd BufNewFile,BufRead *.ejs set filetype=ejs autocmd BufNewFile,BufRead *._ejs set filetype=ejs function! s:DetectEjs() if getline(1) =~ '^#!.*\<ejs\>' set filetype=ejs endif endfunction autocmd BufNewFile,BufRead * call s:DetectEjs() 

和一个语法文件(来自user456584的答案): ~/.vim/syntax/ejs.vim

 runtime! syntax/html.vim unlet b:current_syntax " Include Java syntax syn include @ejsJavaScript syntax/javascript.vim syn region ejsScriptlet matchgroup=ejsTag start=/<%/ keepend end=/%>/ contains=@ejsJavaScript syn region ejsExpr matchgroup=ejsTag start=/<%=/ keepend end=/%>/ contains=@ejsJavaScript " Redefine htmlTag so that it can contain jspExpr syn clear htmlTag syn region htmlTag start=+<[^/%]+ end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster,ejsExpr,javaScript " syn keyword ejsPrint contained print syn match javaScriptType /\<\zsvars\ze\./ syn match javaScriptSpecial /\<\zsexports\ze\./ syn match javaScriptFunction /\<\zsprint\ze(/ syn match javaScriptFunction /\<\zsinclude\ze(/ syn match javaScriptFunction /\<\zsincludeObject\ze(/ syn match javaScriptFunction /\<\zsfetch\ze(/ syn match javaScriptFunction /\<\zsfetchObject\ze(/ command -nargs=+ HiLink hi def link <args> HiLink ejsTag htmlTag delcommand HiLink let b:current_syntax = "ejs" 

尝试这个

 cd /usr/share/vim/vim74/syntax #maybe vim64 or other cp html.vim ejs.vim vim ejs.vim 

你可以编辑html.vim但我build议你不要…然后find

 syn region javaScript start=+<script\_[^>]*>+ keepend end=+</script>+me=s-1` contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc 

和写

  syn region ejsScript start=+<%+ keepend end=+%>+ contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc 

在那条线下。

  HtmlHiLink javaScript Special 

  HtmlHiLink ejsScript Special 

在它下面

把这一行添加到你的~/.vimrc

 au BufNewFile,BufRead *.ejs set filetype=ejs 

现在你的ejs代码看起来像js代码…或者你只是想看起来像别的东西?

replase

  HtmlHiLink ejsScript Special 

通过(例如)

  hi def ejsScript term=bold cterm=bold gui=bold 

其实在这个例子中,两条线可以一起住…

它使你的代码可爱〜

你可以阅读这个来帮助你使用你的vim语法