Von Zeit zu Zeit muss ich mit Code arbeiten, der nicht bis zur Einrückungsstufe eingerückt ist, auf die ich Vim eingerichtet habe (4 Leerzeichen pro Ebene), normalerweise nachdem ich etwas in die Datei kopiert / eingefügt habe. Normalerweise komme ich mit <<
und aus >>
. Das Problem ist, dass sie nicht zur nächsten Einrückungsstufe springen, sondern nur 4 Leerzeichen addieren oder subtrahieren.
Wenn ich solchen Code habe
if condition:
do this
do that
Tun >>
auf do that
führt zu
if condition:
do this
do that
Ich möchte, dass es dazu geht
if condition:
do this
do that
Abgesehen davon, dass die Einrückung der obigen Zeile leicht übereinstimmt, möchte ich, dass sie zur nächsten Einrückungsstufe springt und keine 4 Leerzeichen hinzufügt.
Dies ist, was ich in meinem .vimrc in Bezug auf Einrückungen habe
:set tabstop=4 shiftwidth=4 expandtab
>>
und <<
fügen Sie jeweils Einrückungen hinzu und entfernen Sie sie, was nicht das ist, was Sie wollen. Was Sie wollen, ist "Formatierung", mit der fertig ist ==
.
:nnoremap >> ^i<tab><esc>
wenn Sie wirklich Tab-Verhalten auf>>
==
springt auf die Ebene der obigen Zeile. Während eine gute Sache , zu wissen, es würde ich nicht Arbeit in allen Fällen habe Interesse an. Als Ergänzung zu der Frage, was ich will , ist für >>
und <<
einrücken / Dedent in dieser Richtung zum nächsten Vielfachen von Einrückungstiefe von der Grenze nach oben .
==
verwendet entweder equalexpr
oder, equalprg
um die angegebenen Zeilen neu zu formatieren.
filetype plugin indent on
in Ihrem.vimrc
, Dateityp (und Plugin) Einzug bezogene Regeln gelten. Überprüfen Sie beim Bearbeiten, was Ihrtabstop
Wert tatsächlich ist (set tabstop?
dies gilt auch für die anderen Einstellungen), und ändern Sie diese Werte, indem Sie Ihre Zeile zu einer After-Datei hinzufügen, z.