Quel est le meilleur moyen de faire en sorte que vim surligne les fichiers ejs (http://embeddedjs.com/)? Est-il possible de configurer la surbrillance html pour le fichier en général et la surbrillance javascript sur ses parties à l'intérieur de <%%>? Apprécier ton aide!
Réponses
Trop de publicités?J'ai eu les meilleurs résultats en téléchargeant ce fichier de syntaxe directement dans ~ / .vim / syntax
Pour une solution qui utilise du javascript et de la syntaxe html, le cas échéant (et ne pas compter sur une quelconque tierce partie javascript plugins) vous avez besoin d'un ftdetect fichier qui s'exécute autocmd
lorsque les fichiers avec l' .ejs
extension sont chargés combiné avec un ejs fichier de syntaxe.
Si vous n'êtes pas préoccupé par la façon dont il fonctionne j'ai mis un package que vous pouvez récupérer à partir de github ici. Si vous utilisez Vundle juste ajouter ceci à votre .vimrc:
Bundle 'nikvdp/ejs-syntax'
Pour le faire vous-même, de créer deux fichiers en vous - ~/.vim
le dossier:
Un ftdetect fichier: ~/.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()
Et un fichier de syntaxe (à partir de user456584 réponse) : ~/.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"