Wie kann ich mit der manuellen Einfügung in vim jede Zeile mit derselben Einrückung wie die aktuelle Zeile (die Zeile, auf der sich der Cursor befindet) einfalten?
Grundsätzlich muss Vim manchmal Dinge zusammenfalten, so wie Vim es tun würde, wenn
foldmethod=indent
, aber ich arbeite lieber mit foldmethod=manual
und werde es nicht ändern.
Zum Beispiel:
function f(x)
while (x > a)
foo = bar
someStuff() // suppose cursor is here
x = foo + a
end
if (x < b)
x = b // this line should not be indented
end
end
In diesem Fall sollten die Zeilen foo = bar
nach gefaltet werden x = foo + a
.
Antwort1
Sie können verwenden, :-1,+1norm zF
um einen relativen Bereich der zu faltenden Zeilen anzugeben. (Im Fall von 1 Zeile darüber und einer darunter können Sie das 1
s in diesem Befehl weglassen und nur verwenden :-,+norm zF
.)
Wenn Sie bereit sind, ein Plugin zu installieren, gibt es
vim-einrücken-objektdas ergibt 'Objekte einrücken' wie ii
für i
Innenzähnung i
und ai
für a
runde
i
Zähnung (unter anderem). Dann könnten Sie so etwas tun wie zfii
.