Vim zwei Zeilen vertauschen

M

mahed

Aktives Mitglied
Thread Starter
Dabei seit
26.03.2006
Beiträge
411
Reaktionspunkte
1
Hallo zusammen
Gibt es in Vim eine Möglichkeit, zwei Zeilen (nicht unmittelbar nacheinander!) zu vertauschen? Ich habe davon gehört, es ist möglich eine Funktion mit ':map' auf eine Taste(-nkombination) selber zu definieren. Also wäre es toll, wenn es sowas wie
Code:
swap(zeile_i, zeile_j)
geben könnte.

Besten Dank für Hinweise.
 
Wenn Du z.B. Zeile 2 und 4 tauschen möchtest, kannst Du sowas machen:

:2mo4
:3mo1

Dafür kann man auch ein eigenes Kommando schreiben, aber da müsste ich selbst erst wieder nachlesen, wie man so eine Aufgabe am Besten angeht.
 
ja, das scheint zu funktionieren. Wäre wirklich toll, wenn man das in einen Befehl mappen könnte. Weiss gerade aber auch nicht, wie das läuft.
 
Eine Funktion "Swaplines" könnte z.B. so aussehen:
Code:
fu! Swaplines(first, second)
let fi=a:first
let se=a:second
exe fi."mo".se
let se=se-1
let fi=fi-1
exe se."mo".fi
endfu

Die könnte man in eine Datei schreiben und mit :so .... einlesen (ggf. über ~/.vimrc).
Dann kann man sie mit :call Swaplines(2,4) aufrufen.

Hab ich mal auf die Schelle so ausprobiert. geht aber sicher auch noch geschickter.

Gruß
maceis
 
Hey, danke, ja das hatte ich genau im Sinn.
Kannst du mir den 'fu!' Ausdruck erklären? Bzw., was ist das für eine Sprache? Ich habe mich bis jetzt leider gar nicht mit Vim- Programmierung beschäftigt, wusste nur dass es möglich ist.
Wie müsste der Befehl für das Einlesen in .vimrc aussehen?
 
:so /pfad/zur/datei

Das ist ein vim Skript.
 
Zurück
Oben Unten