Eu trabalho em vários grupos, cada um deles com seus próprios padrões de tabulação / recuo / espaçamento em C.
Trabalho com todos os tipos de código aberto, tudo ao mesmo tempo. Não é prático criar .vimrcarquivos separados e reconfigurar os padrões de formatação. Mais de uma década atrás, finalmente me cansei de lidar com a configuração do editor e escrevi um programa chamado autotabpara lidar com isso.
Quando autotabé configurado com o Vim sugerido, cada vez que você carrega um arquivo no Vim, autotabé invocado nele e a saída das configurações do Vim autotabé passada para um :setcomando.
autotablê vários milhares de linhas do arquivo, analisa-os e determina as configurações para os expandtab, tabstope shiftwidthparâmetros.
Ele descobre se o arquivo usa tabulações rígidas ou apenas espaços para indentação e descobre o tamanho da indentação. Se o arquivo for recuado com guias, ele descobrirá o tamanho correto da guia, com base na renderização da amostra do arquivo usando vários tamanhos de guia e julgando-o de acordo com heurísticas, como alinhamento linha sobre linha de elementos internos.
Funciona bem o suficiente para que eu pare de ajustar o algoritmo anos atrás. Se ficar confuso, quase sempre é porque o arquivo tem problemas de formatação, como o uso de várias convenções ao mesmo tempo.
Também é "agnóstico" quanto ao tipo de arquivo e funciona bem com uma variedade de idiomas diferentes. Eu o uso não apenas em C, mas em scripts de shell, Lisp, Makefiles, HTML e tudo o mais.
Observe que ele não lida com outros parâmetros de formatação que podem ser específicos do projeto, como, por exemplo, em arquivos C, se os caserótulos em uma switchinstrução são recuados ou não, ou se as listas de argumentos de funções agrupadas são simplesmente recuadas ou alinhadas ao abrindo parênteses da lista de argumentos. O Vim tem configurações para esse tipo de coisa e, portanto, o programa poderia ser estendido de forma plausível para analisar o estilo e gerar esses parâmetros.