【发布时间】:2011-06-03 14:53:05
【问题描述】:
让 vim 突出显示 ejs (http://embeddedjs.com/) 文件的最佳方法是什么? 是否可以在一般情况下为文件设置 html 突出显示并将 javascript 突出显示到 内的部分? 感谢您的帮助!
【问题讨论】:
标签: vim syntax-highlighting ejs
让 vim 突出显示 ejs (http://embeddedjs.com/) 文件的最佳方法是什么? 是否可以在一般情况下为文件设置 html 突出显示并将 javascript 突出显示到 内的部分? 感谢您的帮助!
【问题讨论】:
标签: vim syntax-highlighting ejs
感谢 @inkedmn 只是想指出 html 绑定工作得更好,因此把它放在你的 ~/.vimrc 文件中:
au BufNewFile,BufRead *.ejs set filetype=html
【讨论】:
这是我今天整理的内容(对 eruby 脚本进行了一些修改)。它需要安装 vim-javascript 插件。
【讨论】:
Bundle 'briancollins/vim-jst' 添加到了我的 ~/.vimrc。
*.ejs 的正确文件关联应该是au BufRead,BufNewFile *.ejs setf javascript.jsx
我将this syntax file 直接下载到 ~/.vim/syntax 中获得了最好的结果
【讨论】:
如果您希望它们像常规 .js 文件一样突出显示,您可以将其添加到您的 .vimrc 中:
au BufNewFile,BufRead *.ejs set filetype=js
不是 100% 确定这就是您所追求的 - 希望对您有所帮助。
【讨论】:
对于在适当情况下使用 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"
【讨论】:
试试这个
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 语法
【讨论】: