27 Stimmen

Welche Einstellung in vim wirkt der Weigerung von smartindent entgegen, # Kommentare in Shell-Skripten einzurücken?

Ich benutze seit kurzem vim 7 (vorher vim 6) und die smartindent Einstellung. Im Großen und Ganzen funktioniert das gut, obwohl ich so daran gewöhnt bin, nach einer geöffneten Klammer einen Tabulator zu tippen, dass es fast kontraproduktiv ist.

Allerdings gibt es ein wahnsinniges Verhalten. Wenn ich ein Shell-Skript bearbeite, versuche ich, einen Kommentar auf der aktuellen Einrückungsebene zu erstellen, aber smartindent wird nichts damit zu tun haben. Es besteht darauf, dass der Kommentar auf Ebene 0 stehen muss (kein Einzug). Was noch schlimmer ist, es bricht Shift-Rechts (' >> ' und Freunde), damit sie nicht arbeiten. Das ist eine regelrechte Insubordination, und ich würde gerne wissen, wie man das am besten beheben kann.

(Ich bin auch nicht scharf auf smartindent Ideen zur Einrückung then après if .)

Bevorzugte Lösungen ersparen mir manuelles Bashing - ich bin zu faul. Eine Option wäre "Ausschalten smartindent bei der Bearbeitung von Shell-Skripten (für den Rest lassen Sie es eingeschaltet)'. Eine weitere Möglichkeit wäre eine Anleitung, wie man das Kontrollskript für smartindent und was ich bearbeiten muss, um die Merkmale, die mir nicht gefallen, zu ändern. Die letzte Option (für die ich keine Ratschläge benötige - nur den Hinweis, dass es der beste oder einzige Weg ist, um die Vernunft wiederherzustellen) besteht darin, die smartindent nicht festgelegt.

Ich habe die vage verwandte Frage auf " (PHP und) lästige vim unindent Regeln "; sie gibt mir keine direkte Antwort, obwohl vielleicht die cindent und damit zusammenhängende Punkte, die dort erwähnt werden, sind in der Tat Teil der Antwort.

1voto

PolyThinker Punkte 5076

Ich habe die folgenden Zeilen in meiner .vimrc und ich beobachte das Problem nicht.

set smartindent
inoremap # X^H#

Früher hatte ich Autoeinrückung einstellen nach diesen beiden Zeilen, aber es scheint keine Wirkung zu haben.

1voto

pixelbeat Punkte 28985

Ja, das ist muy lästig. smartindent ist wirklich nur für C-ähnliche Sprachen geeignet. Sehen Sie, wie ich die entsprechende Einrückung auf der Grundlage der Sprache unter aktivieren: http://www.pixelbeat.org/settings/.vimrc

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X