2010-11-18 1 views
2

Ich verwende visueller Block, um eine bestimmte Spalte in einigen Bereichen (z. B. Zeilen x bis y) zu kopieren. Ich frage mich, ob es eine einfachere Möglichkeit gibt, die gleiche Aufgabe zu erfüllen.VIM, wie Spalte n von Zeile x zu y auswählen/kopieren

Auch, nachdem ich diese Zeilen kopiert habe, möchte ich sie horizontal ausschneiden und einfügen. Ist es möglich? Es ist irgendwie ärgerlich zu tun, J, vor allem, wenn die Anzahl der Zeilen groß ist.

Zum Beispiel Datei A (btw beide Dateien geöffnet sind im Split-Fenster) ist

............ 
sadsa asds dog 
sadsa asds cat 
sadsa asds me 
sadsa asds you 
........... 

Und ich möchte, 4 Zeilen in der dritten Spalte zu Datei B, kopieren, die vielleicht schon Daten enthalten. Sagen wir, ich möchte diese Daten über die Leitung 30 kopieren, auf diese Weise (Zeilennummern hypothetisch):

............... 
    29. other data 
    30. dog cat me you 
    31. other data 
    ................ 

Antwort

1

Ich würde es einfügen und verwenden 4J, 5J, 20J usw. je nachdem, wie viele Zeilen gibt. Ist das immer noch zu nervig zu tun?

EDIT: Ahh, ich sehe, wie das wäre ziemlich schmerzhaft. Ich habe damit ein bisschen herumgespielt und ein Makro gemacht, das den Schmerz ein wenig lindert. Es automatisiert im Wesentlichen das, was MBO unten vorschlägt.

moGo^[pVGJdd'op 

Paste, die in einen Vim-Puffer, ^[ mit einem tatsächlichen Escape-Zeichen ersetzen (mit Standard-Tastenbelegungen, gehen im Einfügemodus, drücken Sie Strg + V, dann ESC drücken.

nun, dass Makro markieren, und drücken "py

Jetzt können Sie das Makro mit @p

Kopieren Sie die vertikale ‚Hund, Katze, mich Sie‘ spielen String aus einer Datei, die anderen gehen und setzen Sie den Cursor, wo Sie wollen dann push @p und es sollte funktionieren!

RE-EDIT: Peter Rinckers Antwort ist viel besser als meine und sollte die akzeptierte Antwort sein.

+0

ein Problem dabei ist, wenn ich in der Mitte der Datei einzufügen haben bereits andere Daten enthalten, verschmilzt sie alte Daten, die ich nicht – vehomzzz

+1

wollen @vehomzzz Sie kann es am Ende der Datei einfügen, beitreten und dann cut-n-einfügen, wo es sein soll – MBO

+0

Ja, das ist ein Weg, es zu tun =) thx Wie würden Sie diese Zeilen kopieren? – vehomzzz

5

Kopieren Sie den Text aus der Datei A mit visuellen bock Modus durch Ctrl-V in der linken oberen Ecke des Textabschnitts dann schlagen Sie den Cursor auf gegenüberliegenden Ecke des Textabschnitts zu bewegen drücken Sie dann y. Bewegen B in Datei, wo Sie wollen Ihr Stück Text einzufügen, führen Sie die folgenden Schritte aus:

:put 
:'[,']join 

:put wird der Text aus einem Register im Zeilenmodus einzufügen, einschließlich visueller Block zerrte Text.

:join verbinden Linien zusammen wie der J Befehl.

'[ und '] sind Marken, die am Anfang und am Ende einer Änderung gesetzt werden.

:'[,']join wird vom Anfang des eingefügten Textes bis zum Ende des eingefügten Textes eingefügt.

Weitere Informationen finden Sie unter:

:h :put 
:h :j 
+0

+1 für die Ausübung der viel unterschätzten Befehlsmodus Bereiche – sehe

Verwandte Themen