How do I paste a column of text after a different column of text in Vim?
Solution 1:
I was wondering why "visual block mode" wasn't working for me. The key is to yank (or delete) in visual mode.
I find myself needing to copy some stuff from excel columns having variable lengths. Here's how I do it:
Names
Donald Knuth
Sebastian Thrun
Peter Norvig
Satoshi Nakamoto
Age
100
50
60
45
Let's say you want to put the second column after the first.
- Yank it in visual mode:
- Move cursor to the beginning of
Age
- Press
Ctrl + v
to enter visual mode - Move cursor to
5
in45
- Press
y
to yank (ord
to delete)
- Move cursor to the beginning of
You have now yanked in visual mode.
-
Paste (in normal mode)
Move to the end of the first line and add more spaces because it's shorter than the second line for example. If you paste a "block" without adding extra spaces, it will overwrite the "run" in Sebastian Thrun.
Now you're on the first line, insert a few spaces after the last character. Make sure you're not in insert mode and hit
p
to paste the block. (If you want to paste in insert mode, usectrl+r "
)
Solution 2:
Use visual block (ctrl-v
) to cut the letter column. Then move to the first line of the number column. Move to the end and make one space. Then paste the letter column.
Solution 3:
If you're on a Mac and can't figure out why the paste is inserting the block in new lines, it's because you're using the system pasteboard.
No problem, just yank/paste with buffers:
- Ctrlv - select what you want to yank
-
"lettery - yank into
letter
buffer - Go to where you want to paste
-
"letterp - paste from
letter
buffer
Make sure that letter
is not +
as that is the system pasteboard buffer and thus it will have the same effect.
Solution 4:
You have:
abc
def
ghi
123
456
789
Move your cursor onto the a
. Then CTRL+V
, and move your cursor to i
. Press y
.
Next, add a space after the 3
character, and press p
.
Done.