Erstens: Verwenden Sie nicht die Tab Taste in Vim für die manuelle Einrückung. Vim hat ein Paar Befehle im Einfügemodus, um den Einrückungsgrad manuell zu erhöhen oder zu verringern. Diese Befehle sind Ctrl-T y Ctrl-D . Diese Befehle beobachten die Werte von tabstop
, shiftwidth
y expandtab
und halten Sie die richtige Mischung aus Leerzeichen und Tabulatoren ein (maximale Anzahl von Tabulatoren gefolgt von der erforderlichen Anzahl von Leerzeichen).
Zweitens müssen diese manuellen Einrückungstasten ohnehin nicht sehr oft verwendet werden, wenn Sie die automatische Einrückung verwenden.
Si Ctrl-T anstelle von Tab stört, können Sie es umstellen:
:imap <Tab> ^T
Sie können auch neu zuordnen Shift-Tab um die Ctrl-D deindent:
:imap <S-Tab> ^D
Hier sind ^T und ^D wörtliche Steuerzeichen, die wie folgt eingefügt werden können Ctrl-VCtrl-T .
Mit dieser Zuordnung können Sie immer noch ein Tabulatorzeichen in den Puffer eingeben, indem Sie Ctrl-VTab . Beachten Sie, dass Sie dies tun, auch wenn :set expandtab
eingeschaltet ist, erhalten Sie ein nicht expandiertes Tabulatorzeichen.
Ein ähnlicher Effekt wie bei der <Tab>
Karte wird erreicht durch :set smarttab
, was auch dazu führt, dass sich die Rücktaste am Anfang einer Zeile intelligent verhält.
En smarttab
Modus, wenn Tab nicht am Anfang einer Zeile verwendet wird, hat es keine besondere Bedeutung. Das ist ein Unterschied zu meiner obigen Zuordnung von Tab à Ctrl-T denn ein Ctrl-T an beliebiger Stelle in einer Zeile (im Einfügemodus) verwendet, wird die Einrückung dieser Zeile erhöht.
Andere nützliche Zuordnungen können sein:
:map <Tab> >
:map <S-Tab> <
Jetzt können wir z. B. einige Zeilen auswählen und auf Tab um sie einzurücken. Oder drücken Sie Tab zweimal in einer Zeile (im Befehlsmodus), um die Einrückung zu erhöhen.
Wenn Sie die richtigen Befehle zur Verwaltung der Einrückung verwenden, wird alles durch die drei Parameter gesteuert: shiftwidth
, tabstop
y expandtab
.
El shiftwidth
Parameter steuert die Größe der Einrückung; wenn Sie vier Leerzeichen als Einrückung wünschen, verwenden Sie :set shiftwidth=4
oder die Abkürzung :set sw=4
.
Wenn nur dies getan wird, dann wird die Einrückung mit einer Mischung aus Leerzeichen und Tabulatoren erzeugt, weil noexpandtab
ist die Standardeinstellung. verwenden :set expandtab
. Dies bewirkt, dass Tabulatorzeichen, die Sie in den Puffer eingeben, zu Leerzeichen expandieren, und dass die von Vim verwaltete Einrückung nur Leerzeichen verwendet.
Cuando expandtab
eingeschaltet ist, und wenn Sie Ihre Einrückung durch alle geeigneten Vim-Mechanismen verwalten, wird der Wert von tabstop
wird irrelevant. Sie steuert, wie Tabulatoren erscheinen, wenn sie in der Datei vorkommen. Wenn Sie set tabstop=8 expandtab
und schleichen Sie dann einen harten Tabulator in die Datei mit Ctrl-VTab wird wie üblich eine Ausrichtung an der nächsten 8-spaltigen Tabulatorposition vorgenommen.
3 Stimmen
Verwandt: Wie kann man Tabulatoren durch Leerzeichen ersetzen? bei Vim SE