How do I paste a column of text after a different column of text in Vim?
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.
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 "
)
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.
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.