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

0

Acabei de descobrir recentemente que quando você insere um espaço sem quebra ( nbsp ) em um documento HTML
e defina o encoding para utf-8, você não terá que digitar nbsp; repetidamente para formatar o texto. Eu no começo
pensei, ei, por que eu não mapeio isso para a barra de espaço como :imap <SPACE> <C-R>=nr2char(160)<CR> .
Mais tarde, editei meu .vimrc e quando reiniciei o Vim, recebi dezenas de erros sobre alguma função que precisava de um
nome mesmo que eu tivesse dado. Eu percebi que o nbsp não é tratado como um espaço (duh) mesmo que ele seja parece um. Então, eu pensei que uma maneira melhor seria ter um mapeamento por tipo de arquivo, para que eu quando estou editando um documento html, o espaço insere um nbsp e um espaço normal chr(32) ao editar qualquer outro arquivo. > Como faço isso?

    
por Segfault 09.08.2013 / 23:59

2 respostas

2

O comando au[tocommand] recebe um evento FileType 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
    
por 10.08.2013 / 00:16
3

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 nesse arquivo. Se já houver um arquivo, você poderá criar um diretório chamado html e, em seguida, todos os arquivos no diretório serão originados. Dê uma olhada em :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 (indent não é realmente necessário para isso, mas normalmente é útil).

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

map <buffer>

Também pode ser útil consultar :h ftplugin e :h filetype

    
por 10.08.2013 / 00:46

Tags