Wie kann ich Zeilen in Vim verschieben oder neu anordnen?

Melden
  1. Zeilen in Vim verschieben: Grundlagen
  2. Zeilen direkt mit Bewegungskommandos umpositionieren
  3. Zeilen in visuellen Modi verschieben
  4. Alternative: Tastenkombinationen zum schnellen Verschieben
  5. Zusammenfassung

Zeilen in Vim verschieben: Grundlagen

In Vim gibt es verschiedene Möglichkeiten, um Zeilen zu verschieben oder neu anzuordnen. Die einfachste Methode besteht darin, im normalen Modus Zeilen zu löschen und an einer anderen Stelle wieder einzufügen. Hierfür werden die Befehle dd zum Ausschneiden der aktuellen Zeile und p zum Einfügen der ausgeschnittenen Zeile unter der aktuellen Position genutzt. Alternativ fügt P die Zeile oberhalb der aktuellen Zeile ein.

Beispiel: Um die aktuelle Zeile eine Position nach unten zu verschieben, kann man sie mit dd ausschneiden und dann mit jp eine Zeile nach unten springen und die Zeile einfügen.

Zeilen direkt mit Bewegungskommandos umpositionieren

Eine elegantere Methode verwendet den Befehl :m, mit dem sich Zeilen direkt an eine neue Position verschieben lassen, ohne den Zwischenschritt mit Ausschneiden und Einfügen. Wenn man beispielsweise die aktuelle Zeile eine Position nach unten verschieben möchte, gibt man im normalen Modus ein:

:m+1

Dieser Befehl verschiebt die aktuelle Zeile hinter die nächste Zeile. Danach muss man mit zz eventuell den Bildschirm zentrieren.

Entsprechend verschiebt :m-2 die aktuelle Zeile zwei Zeilen nach oben.

Zum Ausführen dieser Befehle drückt man im normalen Modus zuerst :, um in den Befehlsmodus zu wechseln, gibt den Befehl ein, und bestätigt mit Enter.

Zeilen in visuellen Modi verschieben

Wenn man mehrere zusammenhängende Zeilen verschieben möchte, kann man diese zuerst im visuellen Zeilenmodus auswählen. Dazu wechselt man in den normalen Modus, positioniert den Cursor auf der ersten zu verschiebenden Zeile und drückt V (Großbuchstabe v). Anschließend bewegt man mit j oder k die Auswahl beliebig nach unten oder oben.

Nach der Auswahl kann man die markierten Zeilen nach unten verschieben, indem man den Befehl :m >+1 eingibt. Hierbei bezeichnet > das Ende der visuellen Auswahl. Um die Zeilen nach oben zu verschieben, gibt man :m ein, wobei den Anfang der Auswahl bezeichnet.

Auch hier bestätigt man mit Enter, um die Verschiebung auszuführen. Um schneller zu arbeiten, kann man die Befehle auch als Tastenkombination in die Vim-Konfiguration übernehmen.

Alternative: Tastenkombinationen zum schnellen Verschieben

Viele Vim-Nutzer fügen eigene Tastenkombinationen hinzu, um Zeilen oder ausgewählte Blöcke schneller zu verschieben, ohne den Befehlsmodus zu verwenden. Ein Beispiel ist das Mappen von Alt-j und Alt-k, um Zeilen untereinander zu tauschen.

Ein Beispiel für eine solche Mapping-Konfiguration in der .vimrc wäre:

nnoremap :m .+1<CR>== nnoremap :m .-2<CR>== vnoremap :m >+1<CR>gv=gv vnoremap :m <-2<CR>gv=gv

Hier verschieben Alt-j und Alt-k in Normal- und Visual-Modus die aktuelle Zeile oder ausgewählte Zeilen nach unten bzw. oben. Das gv=gv sorgt dafür, dass die verschobenen Zeilen danach nochmal neu eingerückt und die visuelle Auswahl erhalten wird.

Zusammenfassung

Zeilen in Vim zu verschieben kann auf verschiedene Weisen erfolgen: Mit dem Ausschneiden und Einfügen, dem Befehl :m oder der Kombination aus visuellem Modus und :m. Für häufiges Verschieben bieten sich benutzerdefinierte Tastaturkürzel an, die den Workflow deutlich beschleunigen können.

0

Kommentare