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?


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


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.


Este plugin não está mais em desenvolvimento ativo. (A última atualização ocorreu há 3 anos .)
Mateen Ulhaq
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.