
Acabei de descobrir recentemente que quando você entra em umEspaço inquebrável(nbsp)em um documento HTML
e definir encoding
como 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 .vimrc
e 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 nbsp
nã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 nbsp
e um espaço normal chr(32)
ao editar qualquer outro arquivo.
Como eu faço isso?
Responder1
O au[tocommand]
comando recebe um FileType
evento que é executado quando filetype
foi 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.vim
e 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-name
para 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 ftplugin
e:h filetype