2011-01-04 19 views
39

¿Cuál es la mejor manera de hacer que vim highlight ejs (http://embeddedjs.com/) archivos? ¿Es posible configurar html highlight para el archivo en general y javascript highlight para sus partes dentro de <%%>? ¡Apreciar tu ayuda!Resaltado de sintaxis para archivos .ejs en vim

Respuesta

3

Si desea que se destacaron como los archivos .js regulares, se podría añadir esto a su .vimrc:

au BufNewFile,BufRead *.ejs set filetype=js 

No es 100% seguro de que es lo que está buscando - espero que ayude.

+0

Bueno, cambiándolo un poco t o au BufRead, BufNewFile * .ejs set filetype = javascript Pude obtener la iluminación de javascript, sin embargo, no es realmente legible ... Sería genial tener html resaltado como html y javascript - como javascript (si es posible). – lyuba

+3

Aparentemente puede usar múltiples tipos de archivos para un solo buffer. Vea aquí: http://stackoverflow.com/questions/2601403/multiple-file-types-in-vim/2604558#2604558 –

+0

Esto funciona, ¡gracias! Sin embargo, ¿hay probablemente una forma de aplicar este comando automáticamente a cada archivo con la extensión .ejs? – lyuba

25

Aquí hay algo que hice hoy (hice algunas modificaciones al script eruby). Requiere que se instale el plugin vim-javascript.

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

+3

esto es genial, si eres como yo, tal vez solo quieras obtener el: https://github.com/briancollins/vim-jst/blob/master/syntax/jst.vim archivo e incluirlo en tu Archivo $ HOME/.vimrc como: au BufNewFile, BufRead * .ejs so $ HOME/.vim/jst.vim – todd

+2

Bien. Acabo de instalar Vundle y luego agregué 'Bundle 'briancollins/vim-jst'' a mi' ~/.vimrc'. –

+0

Gracias; este trabajo con Pathogen también. – bigtunacan

60

Créditos va a @inkedmn sólo quería señalar que html Encuadernaciones mejor manera, por lo tanto, poner esto en su archivo ~/.vimrc:

au BufNewFile,BufRead *.ejs set filetype=html 
+1

¡Gracias! Esto funcionó de maravilla yo –

8

que he tenido el mejor resultados descarga this syntax file directamente en ~/.vim/sintaxis

+0

No funciona para mí. – GMA

+2

Para usar este archivo tuve que agregar a mi .vimrc: au BufNewFile, BufRead * .ejs set filetype = ejs – Ultrasaurus

0

tratan este

cd /usr/share/vim/vim74/syntax #maybe vim64 or other 
cp html.vim ejs.vim 
vim ejs.vim 

sólo puede editar html.vim pero no te sugeriría ... luego encontrar

syn region javaScript start=+<script\_[^>]*>+ keepend end=+</script>+me=s-1` [email protected],htmlCssStyleComment,htmlScriptTag,@htmlPreproc 

y escribir

syn region ejsScript start=+<%+ keepend end=+%>+ [email protected],htmlCssStyleComment,htmlScriptTag,@htmlPreproc 

debajo de esa línea.

encuentran

HtmlHiLink javaScript    Special 

añadir

HtmlHiLink ejsScript    Special 

debajo de ella

añadir esta línea a su ~/.vimrc

au BufNewFile,BufRead *.ejs set filetype=ejs 

ahora su voluntad código ejs parece js código ... o solo quieres que se vea como algo más?

replase

HtmlHiLink ejsScript    Special 

por (por ejemplo)

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

de hecho, en este ejemplo, las dos líneas puede vivir juntos ...

hace el código preciosa ~

se puede leer this para ayudarle con su vim-sintaxis

2

Para una solución que utiliza JavaScript y la sintaxis HTML en su caso (y no depender de ningún tercero javascript plugins) necesita un archivo ftdetect que ejecute autocmd cuando los archivos con la extensión .ejs se carguen combinados con un archivo de sintaxis ejs.

Si no le preocupa cómo funciona, he reunido un paquete que puede tomar de github here. Si se utiliza Vundle sólo tiene que añadir esto a su .vimrc:

Bundle 'nikvdp/ejs-syntax' 

para hacerlo usted mismo, cree dos archivos en la carpeta que ~/.vim:

Un archivo 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() 

Y una archivo de sintaxis (desde la respuesta del usuario456584): ~/.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=/%>/ [email protected] 
syn region ejsExpr matchgroup=ejsTag start=/<%=/ keepend end=/%>/ [email protected] 

" 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" 
Cuestiones relacionadas