48

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

4

6 回答 6

76

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

au BufNewFile,BufRead *.ejs set filetype=html
于 2011-09-24T04:21:54.450 回答
27

这是我今天整理的内容(对 eruby 脚本进行了一些修改)。它需要安装 vim-javascript 插件。

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

于 2011-02-28T01:01:06.703 回答
8

将此语法文件直接下载到 ~/.vim/syntax中的效果最好

于 2014-01-13T20:44:42.957 回答
3

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

如果你不关心它是如何工作的,我已经将一个包放在一起,而不是你可以从 github获取。如果使用 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"
于 2014-10-16T07:06:34.427 回答
3

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

au BufNewFile,BufRead *.ejs set filetype=js

不是 100% 确定这就是您所追求的 - 希望它有所帮助。

于 2011-01-04T19:55:54.730 回答
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

通过(例如)

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

事实上,在这个例子中,两条线可以住在一起......

它使您的代码可爱〜

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

于 2014-07-30T03:08:42.123 回答