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

时间:2011-01-04 19:49:11

标签: vim syntax-highlighting ejs

使vim突出显示ejs(http://embeddedjs.com/)文件的最佳方法是什么? 是否可以为文件设置html高亮显示,javascript突出显示其中的部分< %%>? 感谢您的帮助!

6 个答案:

答案 0 :(得分:67)

致信@inkedmn只是想指出html绑定的工作方式更好,因此把它放在你的〜/ .vimrc文件中:

au BufNewFile,BufRead *.ejs set filetype=html

答案 1 :(得分:27)

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

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

答案 2 :(得分:8)

我已将this syntax file直接下载到〜/ .vim / syntax

,效果最佳

答案 3 :(得分:3)

如果您希望它们像常规.js文件一样突出显示,您可以将其添加到.vimrc中:

au BufNewFile,BufRead *.ejs set filetype=js

并非100%确定您所追求的是什么 - 希望它有所帮助。

答案 4 :(得分:3)

对于在适当情况下使用javascript和html语法的解决方案(并且不依赖于任何第三方javascript插件),您需要一个ftdetect文件,当加载了autocmd扩展名的文件时,该文件会运行.ejs结合ejs语法文件。

如果你不关心它是如何运作的,我把一个包裹放在一起,而不是从github here抓取。如果使用Vundle,只需将其添加到.vimrc:

Bundle 'nikvdp/ejs-syntax'

要自己动手,请在~/.vim文件夹中创建两个文件:

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"

答案 5 :(得分:0)

试试这个

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

你可以编辑html.vim 但我建议你不要...... 然后找

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代码...... 或者你只是想让它看起来像别的东西?

重播

  HtmlHiLink ejsScript             Special

by(例如)

 hi def ejsScript                 term=bold cterm=bold gui=bold
事实上,在这个例子中,两条线可以共存......

它让你的代码变得可爱〜

您可以阅读this来帮助您使用vim语法