É possível ter mapeamento de teclas por tipo de arquivo no Vim

É possível ter mapeamento de teclas por tipo de arquivo no Vim

Acabei de descobrir recentemente que quando você entra em umEspaço inquebrável(nbsp)em um documento HTML
e definir encodingcomo utf-8, você não precisará digitar nbsp;repetidamente para formatar o texto. A princípio
pensei, ei, por que não mapeio isso para a barra de espaço assim :imap <SPACE> <C-R>=nr2char(160)<CR>.
Mais tarde editei meu .vimrce quando reiniciei o Vim, recebi uma dúzia de erros sobre alguma função que precisava de um
nome, mesmo que eu o tivesse dado. Percebi que the nbspnão é tratado como um espaço (duh), embora pareça
um. Então, pensei que a melhor maneira seria ter um mapeamento por tipo de arquivo, para que quando eu estiver editando um documento html, o espaço insira um nbspe um espaço normal chr(32)ao editar qualquer outro arquivo.
Como eu faço isso?

Responder1

O au[tocommand]comando recebe um FileTypeevento que é executado quando filetypefoi definido (por exemplo, na inicialização com um nome de arquivo). Por exemplo, em ~/.vimrc:

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

Responder2

Você pode usar plug-ins de tipo de arquivo que só são originados quando o arquivo é de um determinado tipo de arquivo. Para configurar isso, crie o arquivo ~/.vim/ftplugin/html.vime coloque seus comandos nele. Se já existir um arquivo, você poderá criar um diretório chamado html e então todos os arquivos no diretório serão originados. Dê uma olhada:h ftplugin-namepara outras opções de nomenclatura. (Se os diretórios não existirem, crie-os)

Tudo o que você precisa ter em seu vimrc é filetype plugin indent on(o recuo realmente não é necessário para isso, mas normalmente é útil).

Também pode ser importante tornar o mapeamento local apenas para o buffer usando

map <buffer>

Também pode ser útil examinar :h ftplugine:h filetype

informação relacionada