Estoy usando el lenguaje de plantilla jinja para generar html y javascript para un sitio web. ¿Cómo puedo hacer que vim entienda que todo entre '{{'/'}}'
y '{%'/'%}'
es código Jinja y el resto es código javascript? ¿Hay una manera simple de hacer eso?En VIM, ¿cómo puedo mezclar las reglas de sintaxis/ident de jinja y javascript en el mismo archivo?
En VIM, ¿cómo puedo mezclar las reglas de sintaxis/ident de jinja y javascript en el mismo archivo?
Respuesta
Para la sintaxis, mi SyntaxRange plugin hace que la configuración sea tan simple como una llamada a una sola función.
Para diferentes configuraciones de tipo de archivo como opciones de sangría, usted tiene que instalar un :autocmd CursorMoved,CursorMovedI
que comprueba en qué región de la línea actual cae (tal vez utilizando la sintaxis en busca de pistas, por ejemplo, con synID()
), y luego intercambia los valores de las opciones en función del resultado .
Editar: Para su caso en particular, que sería algo así como:
:call SyntaxRange#Include('{{', '}}', 'jinja')
:call SyntaxRange#Include('{%', '%}', 'jinja')
que se podía poner en ~/.vim/after/syntax/javascript.vim
aplicarla automáticamente a todos los archivos JavaScript.
Hay una manera relativamente fácil de tener diferentes regiones en su código que usan diferentes archivos de sintaxis, usando el comando "sintaxis incluida" y un comando "región de sintaxis" para definir cada región. A continuación se muestra un código que tengo para sintaxis resaltar diferentes regiones de Perl, R y Python en un solo documento. Las sentencias 'unlet' son necesarias porque los archivos de sintaxis a menudo dependen de que b: current_syntax no exista cuando se ejecutan por primera vez. El suyo sería similar, pero defina el "inicio" y el "final" para las regiones jinja y javascript utilizando los delimitadores que enumeró en su pregunta. Compruebe ayuda para "syn-región" y "sin-include" para obtener más información:
let b:current_syntax = ''
unlet b:current_syntax
syntax include @Perlcode $VIMRUNTIME\syntax\perl.vim
syntax region rgnPerl start='^src-Perl' end='^end-Perl' [email protected]
let b:current_syntax = ''
unlet b:current_syntax
syntax include @rinvim $VIMRUNTIME\syntax\r.vim
syntax region rgnR matchgroup=Snip start="^src-R" end="^end-R" keepend [email protected]
let b:current_syntax = ''
unlet b:current_syntax
syntax include @python $VIMRUNTIME\syntax\python.vim
syntax region rgnPython matchgroup=Snip start="^src-Python" end="^end-Python" keepend [email protected]
let b:current_syntax='combined'
No estoy seguro acerca de cómo obtener diversos auto-sangría en las regiones, esa es una pregunta que iba a mira dentro de mi Creo que una solución sería consolidar todos los archivos de sangría de idiomas en uno y tener una estructura if que procese según la región en la que se encuentre. Sin embargo, tal vez haya una manera más simple que eso.
- 1. ¿Puedo usar el resaltado de sintaxis de Python y SQL en el mismo archivo en Vim?
- 2. Jinja y el conflicto de sintaxis javascript?
- 3. ¿Cómo editar el mismo archivo en varias pestañas en vim?
- 4. ¿Cómo puedo depurar las reglas de mod_rewrite?
- 5. (Vim) diff dos subrutinas en el mismo archivo
- 6. ¿Puedo transportar un archivo en Vim?
- 7. ¿Dónde almacena las variables en jinja?
- 8. VIM es posible detectar múltiples idiomas en el mismo archivo
- 9. ¿Cómo puedo anular las rutas ~/.vim y ~/.vimrc (pero no otras) en vim?
- 10. variable establecida en el jinja
- 11. ¿Cómo reconocer las bibliotecas/marcos de JavaScript en Vim?
- 12. ¿Puedo mezclar SqlConnection.BeginTransaction y TransactionScope?
- 13. Firefox y Javascript reglas de redondeo
- 14. ¿Es malo mezclar las inyecciones basadas en el constructor y las basadas en el colocador?
- 15. ¿Debo mezclar mis UnitTests y mis pruebas de integración en el mismo proyecto?
- 16. ¿Cómo puedo mezclar SVG y HTML en una página?
- 17. En vim, ¿cómo puedo abrir un archivo en el mismo número de línea que cerré por última vez?
- 18. ¿Puedo mezclar JS y CoffeeScript en un proyecto?
- 19. En vim, ¿cómo puedo eliminar todas las líneas en un archivo, excepto las últimas 100 líneas?
- 20. Reglas de sangría de vim (un) molestas
- 21. bucle sobre subconjunto en Jinja Jinja
- 22. ¿Cómo actualizar automáticamente el archivo de etiqueta en vim?
- 23. Combinación de HTML, PHP y sangría de Javascript y resaltado de sintaxis en vim
- 24. mod_rewrite - ¿Apache almacena en caché las reglas .htaccess? (sigue las reglas incluso después de eliminar el archivo .htaccess)
- 25. Cómo mezclar WebForms y MVC en ASP.NET
- 26. Concatenación de cadenas en Jinja
- 27. Indentación de Javascript en VIM
- 28. Hibernate: ¿puedo mezclar parámetros nominales y posicionales?
- 29. Cómo obtener la lista de todas las variables en las plantillas de jinja 2
- 30. Abra solo las primeras líneas de un archivo en Vim
Gracias por el plugin SyntaxRange, simplifica en gran medida la sintaxis específica de la región hl. Si da un ejemplo simple de la solución que propuso para la sangría basada en la región, transferiré la respuesta por usted –
@ThiadodeArruda Sí, un ejemplo es una buena idea. ¡He añadido uno! –
Gracias por el ejemplo, ¿podría extender su ejemplo para incluir sangría? –