Je travaille en plusieurs groupes, chacun ayant sa propre tabulation / indentation / espacement en C.
Je travaille avec toutes sortes d'open source, tous en même temps. Il n'est pas pratique de créer des .vimrc
fichiers séparés et de reconfigurer les normes de formatage. Il y a plus d'une décennie, je me suis finalement lassé de gérer la configuration de l'éditeur et j'ai écrit un programme appeléautotab
pour le gérer.
Quand autotab
est configuré avec Vim suggéré, chaque fois que vous chargez un fichier dans Vim, il autotab
est appelé dessus, et la sortie des paramètres Vim autotab
est transmise à un:set
commande.
autotab
lit plusieurs milliers de lignes du fichier, les analyse et détermine les paramètres des paramètres expandtab
, tabstop
et shiftwidth
.
Il détermine si le fichier utilise des tabulations ou simplement des espaces pour l'indentation, et il détermine la taille de l'indentation. Si le fichier est indenté avec des tabulations, il détermine la bonne taille de tabulation, en fonction du rendu de l'échantillon de fichier à l'aide de différentes tailles de tabulation et en le jugeant en fonction d'heuristiques telles que l'alignement ligne sur ligne des éléments internes.
Cela fonctionne assez bien pour que j'ai arrêté de peaufiner l'algorithme il y a des années. Si cela devient confus, c'est presque toujours parce que le fichier a des problèmes de formatage, tels que l'utilisation de plusieurs conventions en même temps.
Il est également "indépendant" du type de fichier et fonctionne bien avec une variété de langues différentes. Je l'utilise non seulement sur C, mais sur des scripts shell, Lisp, Makefiles, HTML, et tout le reste.
Notez qu'il ne gère pas d'autres paramètres de mise en forme qui peuvent être spécifiques au projet, comme par exemple, dans les fichiers C, si les case
étiquettes d'une switch
instruction sont indentées ou non, ou si les listes d'arguments de fonction encapsulées sont simplement indentées ou alignées sur le parenthèse ouvrante de la liste d'arguments. Vim a des paramètres pour ce genre de chose, et donc le programme pourrait être plausiblement étendu pour analyser le style et afficher ces paramètres.