pack/
(capítulo 22) o compiler/
(capítulo 19) dentro del directorio ~/.vim/
. Estos son ejemplos de rutas de ejecutables de Vim.$HOME/.vim/
(si tienes un sistema operativo diferente como Windows, esto podría ser diferente). Para ver qué rutas diferentes de ejecutables hay para distintos sistemas operativos, echa un vistazo a :h 'runtimepath'
. En este capítulo, usaré ~/.vim/
como ruta predeterminada.~/.vim/
y crea un directorio llamado plugin/
. Crea dos archivos dentro: donut.vim
y chocolate.vim
.~/.vim/plugin/donut.vim
añade esta línea:~/.vim/plugin/chocolate.vim
añade esta línea:"donut!"
y "chocolate!"
. La ruta de ejecutable de complemento puede ser utilizada para scripts de inicialización.:h filetype-overview
para más información. En esencia, esto activa la detección de tipos de archivo en Vim.hola.rb
, al ejecutar :set filetype?
debería mostrar la respuesta correcta filetype=ruby
.hola.rb
, Vim sabe que es un tipo de archivo de lenguaje Ruby por la extensión .rb
.ftdetect/
o utilizando el archivo filetype.vim
. Vamos a explorar ambas opciones.ftdetect/
hola.chocodonut
. Cuando lo abres y ejecutas :set filetype?
, como no tiene una extensión común que Vim pueda reconocer, este devuelve lo siguiente filetype=
..chocodonut
es un archivo de tipo "chocodonut". Crea un directorio llamado ftdetect/
en la ruta ~/.vim/
. Dentro crea un archivo y llámalo chocodonut.vim
(~/.vim/ftdetect/chocodonut.vim
). Dentro de ese archivo, añade:BufNewFile
y BufRead
son ejecutados cada vez que creas o abres un nuevo buffer.*.chocodonut
significa que este evento solo será ejecutado si el buffer abierto tiene .chocodonut
como extensión en el nombre del archivo.set filetype=chocodonut
establece el tipo de archivo para que sea de tipo chocodonut.hola.chocodonut
y ejecuta :set filetype?
. Y ahora contestará filetype=chocodonut
.ftdetect/
. En el futuro, quizás puedas añadir ftdetect/fresadonut.vim
, ftdetect/glasedodonut.vim
, etc., si decides expandir tus tipos de archivos de donuts.set filetype=chocodonut
. La otra manera es ejecutar setfiletype chocodonut
. El primer comando set filetype=chocodonut
siempre establecerá el tipo de archivo al tipo chocodonut, mientras que el segundo comando setfiletype chocodonut
solo establecerá el tipo si todavía no se ha establecido el tipo de archivo.filetype.vim
en el directorio raíz de tu instalación de Vim (~/.vim/filetype.vim
). Añade esto dentro del archivo:hola.plaindonut
. Cuando lo abres y ejecutas :set filetype?
, Vim muestra el tipo de archivo personalizado correcto filetype=plaindonut
.filetype.vim
, puedes notar que este archivo está siendo ejecutado múltiples veces cuando abres hola.plaindonut
. Para prevenir esto, puedes añadir un sistema para que el script principal solo se ejecute una vez. Añade lo siguiente en el archivo filetype.vim
:finish
es un comando de Vim para detener la ejecución del resto del script. La expresión "did_load_filetypes"
no es una función propia de Vim. Es realmente una variable global de dentro de $VIMRUNTIME/filetype.vim
. Si te puede la curiosidad, ejecuta :e $VIMRUNTIME/filetype.vim
. Encontrará estas líneas dentro:did_load_filetypes
y la establece a 1. 1 es equiparable a verdadero en Vim. Deberías también leer el resto de filetype.vim
. Comprueba si puedes entender qué hace cuando Vim la llama.donut
. Crea unos nuevos archivos llamados sugardonut
, glazeddonut
y frieddonut
(sin extensión). Dentro de cada archivo, añade esta línea::set filetype?
dentro de sugardonut
, Vim no sabe qué tipo de archivo asignar a este archivo. Así que devuelve filetype=
.scripts.vim
(~/.vim/scripts.vim
). Dentro del archivo, añade estas líneas:getline(1)
devuelve el texto de la primera línea. Esta comprueba si la primera línea comienza con la palabra "donutify". La función did_filetype()
es una función propia de Vim. Esta devolverá "true" cuando un evento relacionado con un tipo de archivo se ejecute la primera vez. Es utilizado como medida de seguridad para impedir volver a ejecutar un evento de tipo de archivo.sugardonut
y ejecuta :set filetype?
, Vim ahora muestra filetype=donut
. Si abres otro archivo de tipo "donut" (glazeddonut
o frieddonut
), Vim también identifica esos archivos como de tipo donut
.scripts.vim
solo es ejecutado cuando Vim abre un archivo con un tipo de archivo desconocido. Si Vim abre un archivo con un tipo de archivo conocido scripts.vim
no se ejecutará.~/.vim/ftplugin/
). Vim busca dentro de este directorio un archivo con el mismo nombre que el tipo de archivo que acabas de abrir.chocodonut.vim
(~/.vim/ftplugin/chocodonut.vim
):plaindonut.vim
(~/.vim/ftplugin/plaindonut.vim
):~/.vim/ftplugin/chocodonut.vim
. Cada vez que abras un archivo de tipo plaindonut, Vim ejecuta los scripts desde la ruta ~/.vim/ftplugin/plaindonut.vim
.set filetype=chocodonut
por ejemplo). Si abres 3 archivos diferentes de tipo chocodonut, los scripts serán ejecutados un total de tres veces.~/.vim/indent/chocodonut.vim
, este será ejecutado solo cuando abres un archivo de tipo chocodonut. Puedes almacenar códigos relacionados con el sangrado en esta ubicación.~/.vim/colors/
) para almacenar los esquemas de colores. Cualquier archivo que este dentro de este directorio será mostrado al ejecutar el comando :color
.~/.vim/colors/beautifulprettycolors.vim
, cuando ejecutas :color
y presionas la tecla tabulador, verás beautifulprettycolors
como una de las opciones que puedes escoger con el color. Si prefieres añadir tu propio esquema de color, este es el lugar para hacerlo.~/.vim/syntax/
) para definir el resaltado de sintaxis.hello.chocodonut
, dentro del archivo tienes las siguientes expresiones:~/.vim/syntax/chocodonut.vim
. Dentro añade lo siguiente:hola.chocodonut
. Las palabras claves donut
ahora están resaltadas.:h syntax.txt
.donut.txt
(~/.vim/doc/donut.txt
). Y dentro añade los siguientes textos:chocodonut
o plaindonut
(:h chocodonut
o :h plaindonut
), no encontrarás nada.:helptags
para generar nuevas entradas de la ayuda. Ejecuta :helptags ~/.vim/doc/
:h chocodonut
o :h plaindonut
, encontrarás estas nuevas entradas de la ayuda de Vim. Ten en cuenta que ahora el archivo es de solo lectura y tiene asignado un tipo de archivo de ayuda ("help").~/.vim/autoload/
). Dentro del directorio, crea un nuevo archivo y ponle este nombre tasty.vim
(~/.vim/autoload/tasty.vim
). Dentro del archivo escribe:tasty#donut
, no donut()
. El símbolo de almohadilla (#
) es necesario cuando se utiliza la funcionalidad de autoload. La convención para nombrar las funciones para autoload es la siguiente:tasty.vim
y el nombre de la función es (técnicamente) donut
.call
. Vamos a llamar la función con :call tasty#donut()
.tasty#donut
solo mostrarán el mensaje de "tasty#donut".tasty#donut()
, es cuando Vim busca el archivo tasty.vim
y carga todo lo que hay dentro de él, incluyendo la función tasty#donut()
. Autoload es el mecanismo perfecto para funciones que utilizan muchos recursos de tu equipo pero que no las utilizas a menudo.~/.vim/autoload/uno/dos/tres/tasty.vim
, puedes llamar a la función mediante :call uno#dos#tres#tasty#donut()
.~/.vim/after/
) este copia la estructura de ~/.vim/
. Cualquier cosa en esta ruta es ejecutada al final, así los desarrolladores utilizan estas rutas para scripts de anulaciones.plugin/chocolate.vim
, puedes crear ~/.vim/after/plugin/chocolate.vim
en los que ubicar los scripts de anulación. Vim ejecutará ~/.vim/after/plugin/chocolate.vim
después de ~/.vim/plugin/chocolate.vim
.$VIMRUNTIME
para scripts predeterminados y archivos admitidos. Puedes comprobarla ejecutando :e $VIMRUNTIME
.$VIMRUNTIME/default.vim
. Si Vim falla al buscar cualquier archivo vimrc de usuario, Vim utiliza un archivo default.vim
como vimrc.$VIMRUNTIME
.:h $VIMRUNTIME
.:set runtimepath?
~/.vim/
.~/caja/de/donuts/
y quieres añadir ese directorio a tu ruta de ejecutables, puedes añadir esto en tu vimrc:~/caja/de/donuts/
, tienes un directorio de complementos (~/caja/de/donuts/plugin/hello.vim
) y un ftplugin (~/caja/de/donuts/ftplugin/chocodonut.vim
), Vim ejecutará todos los scripts de plugin/hello.vim
cuando abras Vim. Vim también ejecutará ftplugin/chocodonut.vim
cuando abras un archivo de tipo chocodonut.