heurindent: Richtig Einrücken mit Vim
Sowohl privat als auch auf der Arbeit ist Vim mein bevorzugter Texteditor, den ich selbst für komplexere Projekte nutze. Häufig habe ich dabei mit unterschiedlichen Dateitypen aus unterschiedlichen Quellen zu tun, wobei sich die Einrückungstiefe und Einrückungsart (Leerzeichen oder Tab) unterscheiden.
Um den Stil einheitlich zu halten, muss man in einem "reinen" Vim jedes Mal die richtigen Einstellungen vornehmen (hauptsächlich shiftwidth
und expandtab
). Es geht aber auch anders.
Es gibt Erweiterungen für Vim, welche die Einstellungen aus einer Projektkonfiguration laden (die müsste es aber erst einmal geben) oder automatisch erkennen (z.B. sleuth).
Mir waren jedoch alle Erweiterungen zu umständlich, zu umfangreich oder zu unzuverlässig. Also habe ich mir vorletztes Jahr eine eigene Erweiterung geschrieben: heurindent (heuristic indentation)
heurindent verwendet eine Heuristik zur Erkennung der richtigen Werte von shiftwidth
und expandtab
auf Basis der aktuellen Datei. Dabei berücksichtigt es den dominanten Stil (ein einzelner Tab erzwingt nicht automatisch "Einrückung per Tabs") und mehrfach eingerückte Zeilen. Verfügbare Optionen und Befehle sind ausführlich in der Hilfe beschrieben (:help heurindent
).
Über ein Jahr habe ich heurindent nun täglich im Gebrauch und musste in der Zeit nur selten etwas an der Einrückung ändern. Man denkt gar nicht mehr darüber nach. Wechselt man allerdings zu einem anderen (einfachen) Editor oder einem Vim ohne eine solche Erweiterung, stolpert man schnell über unterschiedlich eingerückte Zeilen.