48 votes

Surligner la syntaxe pour les fichiers .ejs dans vim

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!

76voto

tomaszkubacki Points 868

Les crédits vont à @inkedmn je voulais juste souligner que la liaison html fonctionne beaucoup mieux, donc mettez ceci dans votre fichier ~ / .vimrc:

 au BufNewFile,BufRead *.ejs set filetype=html
 

27voto

brian Points 1354

Voici quelque chose que j'ai corrigé aujourd'hui (apporté quelques modifications au script eruby). Le plugin vim-javascript doit être installé.

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

8voto

user456584 Points 8772

J'ai eu les meilleurs résultats en téléchargeant ce fichier de syntaxe directement dans ~ / .vim / syntax

3voto

inkedmn Points 12655

Si vous voulez qu'ils soient surlignés comme des fichiers .js classiques, vous pouvez ajouter ceci à votre fichier .vimrc:

 au BufNewFile,BufRead *.ejs set filetype=js
 

Vous n'êtes pas sûr à 100% que c'est ce que vous recherchez - espérons que cela vous aidera.

3voto

Nik V Points 1

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"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X