(Note that this was written after I spent a few months learning Vim. If you’re just stuck in Vim and want to get out, see What to do when you get stuck in a Vim editor).
I’m publishing my notes on the things that are useful in Vim but that I keep forgetting. My notes are split into four sections, so I’ll publish four posts:
- Miscellaneous Vim Stuff
- Vertical Columns in Vim (“visual blocks”)
- Navigating files, lines, blocks
- Searching in Vim
This is the second post, and it’s about vertical columns of text (“visual blocks”). It’s the same functionality that you get using alt + click in a lot of other text editors.
- Ctrl + v takes you into “visual block” mode, then use the up and down arrows.
- Commands like x will work instantly
- But if you want to do something like substitute (s) or append (A only, a won’t work) or change (c), you need to execute the full command first – at which point it will look like it’s only worked on one line – and then press Esc twice – and finally your change will appear on multiple lines.
- If you want to type replacement text, you use insert mode but it has to be I instead of i (upper case instead of lower case). As with s, a and c you won’t see the full effect until you exit Insert mode AND visual mode (press Esc twice).
- To insert one vertical column of text in front of another one:
- Go to the place you’re copying from
- Use ctrl+v to go into visual block mode
- Use y to copy the highlighted text
- Go to your destination
- Use ctrl+v to select a column of text consisting of the first character of the place you want your new column to go in front of
- Use I to go into insert mode, and type one space
- Press Esc, and you’ll see you have inserted a column of single spaces
- Now use ctrl+v again to highlight the column of spaces
- Use p to paste your original column selection
- There is an explanation here for why you can’t do it without typing the extra space: https://stackoverflow.com/questions/31893732/vim-how-do-i-paste-a-column-of-text-from-clipboard-after-a-different-column-o