Vim: Wie kann ich einen eingerückten Block manuell zusammenfalten?

Vim: Wie kann ich einen eingerückten Block manuell zusammenfalten?

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=manualund 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 = barnach gefaltet werden x = foo + a.

Antwort1

Sie können verwenden, :-1,+1norm zFum einen relativen Bereich der zu faltenden Zeilen anzugeben. (Im Fall von 1 Zeile darüber und einer darunter können Sie das 1s 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 iifür iInnenzähnung iund aifür arunde iZähnung (unter anderem). Dann könnten Sie so etwas tun wie zfii.

verwandte Informationen