Como posso alterar o recuo padrão com base no tipo de arquivo?
34
Eu gostaria de ter recuos diferentes com base no tipo de arquivo no qual estou trabalhando. Por exemplo, trabalhando em um .carquivo, eu gostaria que meu recuo tivesse 4 espaços. Nos .htmlarquivos, eu gostaria de trabalhar com guias.
O uso de um ftplugin é preferível ao uso de comandos automáticos, porque o Vim já faz verificações de tipo de arquivo por si só e já tenta obter o ftplugin adequado para que não haja motivo para forçar ainda mais verificações e reimplementar a roda.
- editar -
Supondo que você tenha filetype plugin onno seu vimrc- o que você deve - o Vim tentará detectar o tipo de arquivo dos arquivos que você editar e, uma vez que o tipo de arquivo correto seja encontrado e definido para o buffer, tente obter o plug-in correspondente nos locais padrão:
Tudo isso acontece automaticamente , portanto, se o seu tipo de arquivo for reconhecido pelo Vim, não há absolutamente nenhuma razão para adicionar qualquer lógica de detecção de tipo de arquivo: basta adicionar suas configurações ao plug-in correto e você estará bem.
Preciso ativar o plug-in de alguma forma ou a criação do (s) arquivo (s) será ativada automaticamente?
DeltaLima 03/02
Verifique se você tem filetype plugin indent onno seu vimrc.
Romainl
11
O @DeltaLima vim possui um caminho que percorre para verificar as configurações. Enquanto filetype plugin onestiver definido, o caminho do vim inclui os arquivos ftplugin/<filetype>.vime after/ftplugin/<filetype>/vimem seu caminho.
Davidlowryduda 03/02
@ DeltaLima, veja minha edição.
Romainl
14
Você pode fazer isso com comandos automáticos no seu .vimrc.
Por exemplo, eu tenho uma função html_like_modeque configura várias coisas para editar arquivos HTML. Na minha .vimrc, eu tenho:
au BufNewFile,BufRead *.html call s:html_like_mode()
Isso interrompe a extensão do arquivo. Você também pode desativar o tipo de arquivo, se tiver ativado:
au FileType perl setlocal equalprg=perltidy
Como você pode ver, você pode fazer qualquer comando lá. Então você pode facilmente fazer um setlocal shiftwidth 4para seus arquivos * .c.
augrouppermite agrupar comandos automáticos relacionados em grupos nomeados. (Veja aqui para aprender sobre os grupos de comandos automáticos.) Usamos augroups para adicionar comandos automáticos de ~/.vimrcuma maneira que não adicione duplicados toda vez que os originamos.
augroup vimrc
autocmd!
augroup END
autocmd vimrc FileType html setlocal shiftwidth=4 tabstop=4
filetype plugin indent on
no seuvimrc
.filetype plugin on
estiver definido, o caminho do vim inclui os arquivosftplugin/<filetype>.vim
eafter/ftplugin/<filetype>/vim
em seu caminho.Você pode fazer isso com comandos automáticos no seu
.vimrc
.Por exemplo, eu tenho uma função
html_like_mode
que configura várias coisas para editar arquivos HTML. Na minha.vimrc
, eu tenho:Isso interrompe a extensão do arquivo. Você também pode desativar o tipo de arquivo, se tiver ativado:
Como você pode ver, você pode fazer qualquer comando lá. Então você pode facilmente fazer um
setlocal shiftwidth 4
para seus arquivos * .c.fonte
augroup
permite agrupar comandos automáticos relacionados em grupos nomeados. (Veja aqui para aprender sobre os grupos de comandos automáticos.) Usamosaugroup
s para adicionar comandos automáticos de~/.vimrc
uma maneira que não adicione duplicados toda vez que os originamos.fonte
Autocmd e FileType usados
fonte