¿Cómo puedo obtener una lista de los nombres de los tipos de archivo que vim conoce actualmente?
Quiero poder hacer esto para que cuando vim no detecte automáticamente un tipo de archivo, pueda probar algunos de los tipos de archivo que vim sabe que pueden ser similares y ver si proporcionan un resaltado de sintaxis razonable.
Sé que los archivos vimscript que tratan con tipos de archivo se colocan en el ftplugin
directorio por convención, pero no es necesario que lo estén (no estoy seguro, pero no creo que los archivos vimscript en el ftplugin
directorio sean especiales), así que solo quiero pregúntele a Vim qué tipos de archivos conoce, independientemente de cómo se enteró de ellos.
syntax-highlighting
Praxeolítico
fuente
fuente
:setfiletype
(es decir,Tab
después de un espacio). No estoy seguro si es la lista completa o cómo capturarla en algún búfer / archivo.<c-d>
lugar de<tab>
para enumerar las terminaciones.Respuestas:
Solución simple
Escriba
:setfiletype
(con un espacio después) , luego presioneCtrl-d
.Vea
:help cmdline-completion
para más información sobre autocompletado en la línea de comando de vim.Solución complicada
Esta solución utiliza la
'runtimepath'
opción para obtener todos los directorios de sintaxis disponibles y luego obtiene una lista de los archivos vimscript en esos directorios con sus extensiones eliminadas. Esta puede no ser la forma más segura de hacerlo, por lo que las mejoras son bienvenidas:Luego puede usar esta función de la forma que desee, como imprimir todos los valores de la lista. Podrías lograr eso así:
Tenga en cuenta que esto probablemente se puede compactar un poco, es así para facilitar la lectura. No explicaré todas las funciones y comandos utilizados aquí, pero aquí están todas las páginas de ayuda para ellos:
:help 'runtimepath'
:help :let
:help :let-&
:help split()
:help :for
:help expr-.
:help :if
:help isdirectory()
:help glob()
:help fnamemodify()
:help add()
:help uniq()
:help sort()
fuente
set filetype<space><c d>
, me muestra una lista, pero html no está en la lista. Java no está en la lista. ¿Cómo muestro los nombres de tipo de archivo en el sentido de tipos de archivo que corresponden a las configuraciones de formato de sintaxis?:setfiletype
no tiene el espacio típico entre "set" y "filetype". Puedes encontrar más información con:help :setfiletype
y:help ftdetect
.:setfiletype ht<Ctrl+D>
para enumerar el tipo de archivo que comienza con ht, que filtra los resultados no deseados. :)Si su versión de vim es lo suficientemente reciente (v7.4.2011 +), puede solicitar tipos de archivo conocidos con la función que ahora podemos usar para ayudar a definir la autocompletación manual:
getcompletion()
Si desea restringir la lista a tipos de archivo que comienzan con a
'c'
, debe llamary así.
Nota: a diferencia de las soluciones que analizan los nombres de archivo y de directorio
$VIMRUNTIME/{syntax,filetype}/
, esta solución también analiza'runtimepath'
. Según tengo entendido, no ve nuevos tipos de archivos definidos / registrados sobre la marchaset ft=foobar
, ni después de los comandos automáticos.fuente
También puede imprimir todos los tipos de archivos en el terminal ejecutando los siguientes 2 comandos:
1)
2)
El primer comando simplemente navega a su ruta de tiempo de ejecución vim (para mí fue / usr / share / vim / vim80 ).
El segundo comando enumera todos los nombres de tipo de archivo en las dos carpetas donde vim almacena las definiciones de tipo de archivo.
Actualizar
Mejoras sugeridas a los dos comandos de muru que ofrecen:
1)
2)
fuente
tr
para convertir las nuevas líneas en nulas solo para volver a convertirlo en el siguiente comando, procese la sustitución cuando lo haría la simple agrupación de comandos. Sugeriría algo como:find syntax ftplugin -iname '*.vim' -exec basename -s .vim {} + | sort -u
vim -Nesc '!echo $VIMRUNTIME' -c qa
, Yo creo que.printf
es una orden interna):f=({ftplugin,syntax}/*.vim) && f=(${f[@]##*/}) && printf "%s\n" "${f[@]%%.*}" | sort -u
. Consulte "Expansión de parámetros" en la página de manual de Bash para obtener una explicación de los jeroglíficos.bash
, que 'no es un complemento de tipo de archivo real ... y obtiene el efecto del tipo de archivo "sh"'Intente ver en $ VIMRUNTIME / sintaxis. Use: echo $ VIMRUNTIME para conocer su valor. En mi computadora, $ VIMRUNTIME / syntax era / usr / share / vim / vim81 / syntax. Tiene todos los archivos de sintaxis.
Si tiene un vim con gui, también puede usar el menú Sintaxis para obtener todos los tipos de archivos compatibles.
fuente