web-dev-qa-db-de.com

Wie füge ich eine Textspalte nach einer anderen Textspalte in Vim ein?

Ich habe zwei Spalten voller Text, und ich möchte sie nebeneinander stellen. Zum Beispiel habe ich

abc
def
ghi

und

123
456
789

und ich will

123 abc
456 def
789 ghi

Alles, was ich finden kann, ist, wie man die Zeile same am Ende jeder Zeile einer Spalte anfügt. Ich kann nicht herausfinden, wie ein mehrzeiliger Textblock am Ende einer anderen Spalte eingefügt wird.

57
Lily Ballard

Verwenden Sie den visuellen Block (ctrl-v), um die Briefspalte auszuschneiden. Gehen Sie dann zur ersten Zeile der Zahlenspalte. Gehen Sie ans Ende und machen Sie ein Leerzeichen. Fügen Sie dann die Briefspalte ein.

49
clime

Ich habe mich gefragt, warum "Visual Block Mode" für mich nicht funktionierte. Der Schlüssel ist im visuellen Modus yank (oder löschen).

Ich muss einige Dinge aus Excel-Spalten mit variablen Längen kopieren. So mache ich es:

Names
Donald Knuth
Sebastian Thrun
Peter Norvig
Satoshi Nakamoto

Age
100
50
60
45

Angenommen, Sie möchten die zweite Spalte nach der ersten setzen. 

  1. Ruck es im visuellen Modus:
    • Bewegen Sie den Cursor an den Anfang von Age.
    • Drücken Sie Ctrl + v, um den visuellen Modus aufzurufen
    • Bewegen Sie den Cursor zu 5 in 45.
    • Drücken Sie y, um zu löschen (oder d, um zu löschen)

Sie haben jetzt im visuellen Modus gerissen.

  1. Einfügen (im normalen Modus)

    • Gehen Sie zum Ende der ersten Zeile und fügen Sie mehr Leerzeichen hinzu, da diese beispielsweise kürzer als die zweite Zeile ist. Wenn Sie einen "Block" einfügen, ohne zusätzliche Leerzeichen hinzuzufügen, wird der "Lauf" in Sebastian Thrun überschrieben.

    • Jetzt sind Sie in der ersten Zeile und fügen nach dem letzten Zeichen ein paar Leerzeichen ein. Stellen Sie sicher, dass Sie sich nicht im Einfügemodus befinden und drücken Sie p, um den Block einzufügen. (Wenn Sie im Einfügemodus einfügen möchten, verwenden Sie ctrl+r ")

enter image description here

56
Abdo

Du hast:

abc
def
ghi

123
456
789

Bewegen Sie den Cursor auf a. Dann CTRL+V und bewegen Sie den Cursor zu i. Drücken Sie y.

Fügen Sie nach dem Zeichen 3 ein Leerzeichen ein und drücken Sie p.

Erledigt.

15
Matej

Wenn Sie auf einem Mac arbeiten und nicht herausfinden können, warum der Block durch das Einfügen in neue Zeilen eingefügt wird, liegt dies daran, dass Sie das System-Pasteboard verwenden.

Kein Problem, einfach mit Puffern ziehen/einfügen:

  1. Ctrlv - Wählen Sie aus, was Sie ziehen möchten
  2. "Buchstabey - In den letter-Puffer ziehen
  3. Gehen Sie zu der Stelle, an der Sie einfügen möchten
  4. "Buchstabep - Einfügen aus dem letter-Puffer

Vergewissern Sie sich, dass letter nicht + ist, da dies der System-Pasteboard-Puffer ist und daher dieselbe Wirkung hat.

4
Qix

Dies mag offensichtlich erscheinen, aber wenn Sie aus einem extern kopierten Puffer einfügen, funktioniert dies nicht nur mit dem Einfügen im visuellen Modus. Was Sie tun können, ist zunächst eine normale Paste in einem leeren Bereich auszuführen und mit der oben beschriebenen Methode vertikal zu schneiden/einfügen.

3

Wenn Sie den Registertyp manuell so einstellen möchten, dass er blockweise sagt, verwenden Sie diese Option 

:call setreg(0, getreg(0), 'b')

oder

:call setreg('*', getreg('*'), 'b')

Nützlich zum Einfügen einer Spalte aus einem Tabelleneditor.

Siehe :help setreg und vimtip für Details.

0
nullp