¿Es posible tener una asignación de claves por tipo de archivo en Vim?

¿Es posible tener una asignación de claves por tipo de archivo en Vim?

Últimamente descubrí que cuando entras en unespacio irrompible(nbsp)en un documento HTML
y establezca el encodingvalor en utf-8, no tendrá que ingresar nbsp;repetidamente para formatear el texto. Al principio
pensé, oye, ¿por qué no asigno esto a la barra espaciadora así :imap <SPACE> <C-R>=nr2char(160)<CR>?
Más tarde edité mi .vimrcy cuando reinicié Vim, recibí docenas de errores sobre alguna función que necesitaba un
nombre a pesar de que se lo había dado. Me di cuenta de que nbspno se trata como un espacio (obviamente) aunque
lo parezca. Entonces, pensé que una mejor manera sería tener una asignación por tipo de archivo, de modo que cuando esté editando un documento html, el espacio inserte un nbspespacio normal chr(32)al editar cualquier otro archivo.
¿Cómo hago esto?

Respuesta1

El au[tocommand]comando toma un FileTypeevento que se ejecuta cuando filetypese ha configurado (por ejemplo, al iniciar con un nombre de archivo). Por ejemplo en ~/.vimrc:

au Filetype python source ~/.vim/scripts/python.vim

Respuesta2

Puede utilizar complementos de tipo de archivo que solo se obtienen cuando el archivo es de un determinado tipo de archivo. Para configurar esto, cree el archivo ~/.vim/ftplugin/html.vimy coloque sus comandos en este archivo. Si ya existe un archivo, puede crear un directorio llamado html y luego se obtendrán todos los archivos del directorio. Echa un vistazo a:h ftplugin-namepara otras opciones de nombres. (Si los directorios no existen crearlos)

Todo lo que necesitas tener en tu vimrc es filetype plugin indent on(la sangría realmente no es necesaria para esto, pero normalmente es útil).

También podría ser importante hacer que el mapeo sea local para el búfer solo usando

map <buffer>

También podría ser útil revisar :h ftpluginy:h filetype

información relacionada