Wie passe ich Vim an den aktuellen Einrückungsstil der Datei an, die ich bearbeite?

39

Ich arbeite an einer Reihe von JavaScript-Projekten. In den meisten dieser Projekte besteht der Einzug von JavaScript-Dateien aus zwei Leerzeichen. Daher habe ich die standardmäßige Einzugsbreite auf diesen Wert festgelegt. In einigen anderen Projekten wird es jedoch 1 oder 4.

Gibt es eine Möglichkeit, Vim aufzufordern, den Einrückungsstil basierend auf dem in der aktuellen Datei bereits verwendeten Stil zu ändern?

Thameera
quelle
Warum fügen Sie solche Einstellungen nicht in .vimrc für einen bestimmten Dateityp hinzu? :au BufEnter *.js :set shiftwidth=2. Dies funktioniert für alle Projekte,
SibiCoder
1
@SibiCoder: Da selbst der gleiche Dateityp in verschiedenen Projekten unterschiedliche Einrückungsstile haben kann. (
zb
*.*ist nur ein Muster. Sie können auch Dateinamen oder Pfad verwenden. Oder Sie können für jede Datei einen ähnlichen automatischen Befehl wie den von mir angegebenen verwenden. Sie können den Befehl auto anweisen, die Tabulatorbreite der aktuellen Datei zu übernehmen und als Pfad für diese Datei anzugeben. Es ist ziemlich einfach.
SibiCoder

Antworten:

28

Zur obigen Antwort von @Undo hinzufügen. Auch Tim Pope hat ein Plugin, das versucht, dasselbe bei tpope / vim-sleuth zu tun

Dhruva Sagar
quelle
5
Sleuth scheint meiner Erfahrung nach ein bisschen besser zu funktionieren als detectindent und wird auch versuchen, die richtigen Einzugseinstellungen für neue Dateien zu ermitteln, indem Sie sich andere Dateien in der Nähe im Dateisystem ansehen.
Jamessan
@ Jamessan wusste das nicht, gut zu wissen.
Dhruva Sagar
2
Bitte lesen Sie unsere Richtlinie zu Antworten auf Plug-in-Empfehlungen und fügen Sie einige Details dazu hinzu, wie Sie Ihr empfohlenes Plug-in genau verwenden können, um das Problem zu lösen.
200_success
15

Ich habe es nicht benutzt, aber ciaranm / detectindent könnte das sein, wonach Sie suchen. Es scheint aktiv zu sein (vor 25 Tagen zuletzt aktualisiert) und macht genau das, was Sie wollen:

Ein Vim-Plugin zum automatischen Erkennen von Einzugseinstellungen. Dieses Plugin fügt den Befehl: DetectIndent hinzu, der versucht, die Optionen 'shiftwidth', 'expandtab' und 'tabstop' basierend auf den in der aktiven Datei verwendeten Einstellungen intelligent festzulegen.

Rückgängig machen
quelle
Dieses Plugin befindet sich nicht mehr in der aktiven Entwicklung. (Letztes Update war vor 3 Jahren .)
Mateen Ulhaq