¿Cómo puedo saber qué archivo de sintaxis se está utilizando?

50

Vim es una sintaxis que resalta mi archivo de una manera divertida, y quiero saber qué archivo de sintaxis es responsable de este comportamiento. ¿Cómo puedo saber qué archivos de sintaxis ha cargado vim?

Edward Z. Yang
fuente

Respuestas:

39

Para averiguar qué archivos ha cargado realmente Vim, ejecute

:scriptnames
garyjohn
fuente
Eso es útil Ahora, aquí hay algo de lo que no estoy seguro: si un archivo de sintaxis aparece en esta lista, ¿se garantiza que el archivo de sintaxis esté "activo"? Puedo ver bastantes archivos de sintaxis aquí.
Edward Z. Yang
77
En general, solo el último de la lista es "activo", e incluso puede no serlo si ha desactivado el resaltado de sintaxis. Para ver la sintaxis actualmente vigente, ejecute :echo b:current_syntax. Para ver los elementos de sintaxis actualmente vigentes, haga lo que Ingo sugirió y ejecute :syntax list. Esto último puede ayudar si los elementos de sintaxis de más de un archivo de sintaxis están vigentes, como señaló Ingo.
garyjohn
1
En Mac OS XI modifiqué el /usr/share/vim/vim73/filetype.vim. Después de usar el comando anterior, me di cuenta de que estaba usando la versión de MacVim en ~/Applications/MacVim.app/Contents/Resources/vim/runtime/filetype.vim. Si tiene instalado MacVim, asegúrese de modificar el archivo correcto.
echamber
1
Puede tener dos archivos de sintaxis cargados que tengan el mismo nombre. Por ejemplo, vim se envía con resaltado de sintaxis para ColdFusion, ( /usr/share/vim/vim81/syntax/cf.vimpara mí). Instalé un cf.vim personalizado porque el estándar está fechado. :scriptnamesmuestra ambos archivos El valor predeterminado es más bajo en la lista de secuencias de comandos; Sin embargo, el primero se está utilizando. Si nos fijamos /usr/share/vim/vim81/syntax/cf.vim, hay un guardia if exists("b:current_syntax") finish endif. Entonces, en mi caso, scriptnamesfue útil, pero tuve que profundizar un poco más.
avejidah
31

La sintaxis para el búfer actual se puede consultar a través de

:setlocal syntax?

Usualmente (pero no necesariamente) corresponde al tipo de archivo del búfer ( :setlocal filetype?).

Para una mirada más profunda,

:syntax list

muestra todas las definiciones de sintaxis (algunas sintaxis (pueden) incluyen las sintaxis de otros idiomas, por ejemplo, javatiene htmlpara el marcado de comentarios JavaDoc).

Ingo Karkat
fuente
Esto es lo que vine a buscar en base al título de la pregunta de OP. OP, por supuesto, aclara en la descripción que está buscando el archivo de sintaxis real, pero le agradezco que lo deje aquí, ya que es una de las primeras respuestas en los motores de búsqueda.
verboze
4

Puede ver qué tipo (s) de archivo se utilizan actualmente y por

:verbose set ft ?

El complemento que maneja el tipo de archivo probablemente se encuentre en

:e $VIMRUNTIME\ftplugin
Lieven Keersmaekers
fuente