Como faço para o Vim se adaptar ao estilo de recuo atual do arquivo que estou editando?

39

Trabalho em vários projetos JavaScript. Na maioria desses projetos, o recuo dos arquivos JavaScript é de 2 espaços, então eu configurei minha largura de recuo padrão para isso. No entanto, torna-se 1 ou 4 em alguns outros projetos.

Existe uma maneira de pedir ao Vim para alterar o estilo de indentação com base no estilo já usado no arquivo atual?

thameera
fonte
Por que você não adiciona essas configurações no .vimrc para um tipo de arquivo específico? :au BufEnter *.js :set shiftwidth=2. Isso funciona para todos os projetos, #
SibiCoder 28/16
1
@SibiCoder: Porque mesmo o mesmo tipo de arquivo pode ter estilos diferentes de recuo em diferentes projetos. (por exemplo: projetos que não pertencem à mesma empresa)
thameera
*.*é apenas um padrão. Você também pode usar o nome do arquivo ou o caminho. Ou, você pode usar um comando automático semelhante ao que eu dei, para cada arquivo. Você pode instruir o comando auto para pegar a largura de tabulação do arquivo atual e colocá-lo no caminho desse arquivo. É bem fácil.
SibiCoder

Respostas:

28

Para adicionar à resposta de @Undo acima. Tim Pope também tem um plugin que tenta fazer o mesmo no tpope / vim-sleuth

Dhruva Sagar
fonte
5
Sleuth parece funcionar um pouco melhor do que detectindent, na minha experiência, e também tentará determinar as configurações de recuo adequadas para novos arquivos, observando outros arquivos próximos no sistema de arquivos.
jamessan
@jamessan não sabia disso, bom saber.
Dhruva Sagar
2
Leia nossa política sobre respostas para recomendações de plugins e adicione alguns detalhes sobre como usar exatamente o plug-in recomendado para resolver o problema.
200_success
15

Eu não o usei, mas ciaranm / detectindent pode ser o que você está procurando. Parece estar ativo (última atualização há 25 dias) e parece que faz o que você deseja:

Um plug-in Vim, para detectar automaticamente as configurações de recuo. Este plugin adiciona um comando: DetectIndent, que tenta definir de forma inteligente as opções 'shiftwidth', 'expandtab' e 'tabstop' com base nas configurações existentes em uso no arquivo ativo.

Desfazer
fonte
Este plugin não está mais em desenvolvimento ativo. (A última atualização ocorreu há 3 anos .)
Mateen Ulhaq