vim - tutorial - todo sobre elasticsearch
Mezclando dos scripts de resaltado de sintaxis (1)
Escribo publicaciones de blog con Jekyll, y para eso termino usando tres idiomas diferentes en el mismo archivo: YAML al comienzo para los metadatos de la publicación, Markdown en el cuerpo y C ++ en fragmentos de código.
Intenté configurar un script para que vim resaltara los tres correctamente y terminé con algo como esto en syntax / jekyll.vim:
" Build upon Markdown syntax
runtime! syntax/markdown.vim
" pretend there''s no syntax loaded
unlet b:current_syntax
" Bring in YAML syntax for front matter
syntax include @Yaml syntax/yaml.vim
syntax region yamlFrontmatter start=//%^---$/ end=/^---$/ keepend contains=@Yaml
" pretend there''s no syntax loaded
unlet b:current_syntax
" Bring in C++11 syntax for code snippets
syntax include @Cpp syntax/cpp.vim
syntax region cppCodeSnippet matchgroup=Comment start=/^{% highlight cpp %}$/ end=/^{% endhighlight %}$/ keepend contains=@Cpp
let b:current_syntax=''jekyll''
También configuré un script de detección de archivos para configurar ft
a esta sintaxis.
Casi funciona. Cuando abro un archivo que se detecta como este tipo, obtengo todo correcto excepto los resaltados de C ++. Sin embargo, si :syn on
después de eso, todo funciona bien. Puedo eliminar el búfer y abrir el archivo nuevamente y todos los aspectos destacados están bien. Si cierro vim y lo vuelvo a iniciar, necesito ejecutar :syn on
nuevo.
¿Qué me estoy perdiendo? ¿Cómo puedo solucionar este problema?
.vimrc
rápida: agregue la syntax on
la última línea de su .vimrc
, que es lo mismo que la configuración :syn on
en la sesión en vivo.
No tan rápido:
Parece que es posible que haya instalado la sintaxis ''jekyll'' personalizada junto con los archivos de sintaxis predeterminados en $VIMRUNTIME
.
De acuerdo con la sección wiki de Vim sobre la sintaxis personalizada , es preferible mantener todas las personalizaciones personales dentro de ~/.vim
. Por ejemplo, poniendo su sintaxis jekyll.vim
en ~/.vim/syntax/
.
No use un directorio que contenga los archivos distribuidos con Vim porque se sobrescribirá durante una actualización (en particular, no use el directorio $ VIMRUNTIME).
En los documentos de sintaxis Vim :
:syntax enable
ejecuciones '': source $ VIMRUNTIME / syntax / DEFAULT_SYNTAX.vim''.
:syn on
(o :syntax on
) "anulará la configuración con los valores predeterminados".
Por lo tanto, si la configuración :syntax on
hace que su sintaxis personalizada funcione, debe estar contenida en el conjunto de sintaxis predeterminado.
Intenta mantener todas las cosas personalizadas en ~/.vim
y ver si eso resuelve las cosas.