Ich arbeite in mehreren Gruppen, von denen jede ihre eigenen Tab- / Einrückungs- / Abstandsstandards in C hat.
Ich arbeite mit allen Arten von Open Source gleichzeitig. Es ist nicht praktisch, separate .vimrcDateien zu erstellen und die Formatierungsstandards neu zu konfigurieren. Vor mehr als einem Jahrzehnt hatte ich es endlich satt, mich mit der Editor-Konfiguration zu beschäftigen, und schrieb ein Programm, das aufgerufen wurde autotab, um damit umzugehen .
Wenn autotabdie Einrichtung mit Vim vorgeschlagen wird, wird jedes Mal, wenn Sie eine Datei in Vim laden, diese autotabaufgerufen und die Ausgabe der Vim-Einstellungen autotaban einen :setBefehl übergeben.
autotabliest mehrere tausend Zeilen aus der Datei, analysiert sie und stellt fest , die Einstellungen für die expandtab, tabstopund shiftwidthParameter.
Es wird ermittelt, ob die Datei harte Tabulatoren oder nur Leerzeichen zum Einrücken verwendet, und es wird die Einrückungsgröße ermittelt. Wenn die Datei mit Registerkarten eingerückt ist, wird die richtige Registerkartengröße ermittelt, basierend auf dem Rendern des Dateibeispiels unter Verwendung verschiedener Registerkartengrößen und der Beurteilung anhand von Heuristiken wie der zeilenweisen Ausrichtung interner Elemente.
Es funktioniert gut genug, dass ich vor Jahren aufgehört habe, den Algorithmus zu optimieren. Wenn es verwirrt wird, liegt dies fast immer daran, dass die Datei Formatierungsprobleme aufweist, z. B. die gleichzeitige Verwendung mehrerer Konventionen.
Es ist auch "Agnostiker" des Dateityps und funktioniert gut mit einer Vielzahl verschiedener Sprachen. Ich benutze es nicht nur über C, sondern auch über Shell-Skripte, Lisp, Makefiles, HTML und was haben Sie.
Beachten Sie, dass andere Formatierungsparameter, die projektspezifisch sein können, wie z. B. in C-Dateien, nicht behandelt werden, ob caseBeschriftungen in einer switchAnweisung eingerückt sind oder nicht, oder ob umschlossene Funktionsargumentlisten einfach eingerückt oder an der ausgerichtet sind Klammer der Argumentliste öffnen. Vim hat Einstellungen für solche Dinge, und so könnte das Programm plausibel erweitert werden, um den Stil zu analysieren und diese Parameter auszugeben.