【问题标题】:Syntax highlight for .ejs files in vimvim 中 .ejs 文件的语法高亮显示
【发布时间】:2011-06-03 14:53:05
【问题描述】:

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

【问题讨论】:

    标签: vim syntax-highlighting ejs


    【解决方案1】:

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

    au BufNewFile,BufRead *.ejs set filetype=html
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 这很好,如果你像我一样,你可能只想获取:github.com/briancollins/vim-jst/blob/master/syntax/jst.vim 文件并将其包含在你的 $HOME/.vimrc 文件中:au BufNewFile,BufRead *.ejs所以 $HOME/.vim/jst.vim
      • 不错。我刚刚安装了 Vundle,然后将 Bundle 'briancollins/vim-jst' 添加到了我的 ~/.vimrc
      • 看起来*.ejs 的正确文件关联应该是au BufRead,BufNewFile *.ejs setf javascript.jsx
      【解决方案3】:

      我将this syntax file 直接下载到 ~/.vim/syntax 中获得了最好的结果

      【讨论】:

      • 要使用这个文件,我必须添加到我的 .vimrc 中:au BufNewFile,BufRead *.ejs set filetype=ejs
      【解决方案4】:

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

      au BufNewFile,BufRead *.ejs set filetype=js
      

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

      【讨论】:

      • 好吧,把它改成 au BufRead,BufNewFile *.ejs set filetype=javascript 我可以得到 javascript 高亮显示,但是,它不是真的可读...如果有 html 真的很棒突出显示为 html 和 javascript - 作为 javascript(如果可能的话)。
      • 显然您可以为单个缓冲区使用多种文件类型。见这里:stackoverflow.com/questions/2601403/multiple-file-types-in-vim/…
      • 这行得通,谢谢!但是,有没有办法自动将此命令应用于每个扩展名为 .ejs 的文件?
      • 是的。看看这个答案中的例子。 ;)
      【解决方案5】:

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

      如果你不关心它是如何工作的,我已经把一个包放在一起,你可以从 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"
      

      【讨论】:

        【解决方案6】:

        试试这个

        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
        

        其实,在这个例子中,两条线可以同时存在...

        它让你的代码很可爱~

        您可以阅读 this 来帮助您了解 vim 语法

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-05-07
          • 2010-09-08
          • 2016-08-16
          • 2015-04-24
          • 1970-01-01
          • 2012-12-04
          • 1970-01-01
          相关资源
          最近更新 更多