tags:

views:

172

answers:

2

Say that I have this simple text in (g)Vim:

a  b  c
a  b  c
a  b  c
a  b  c
a  b  c

after changing to visual block selection mode how can I can select the whole 3rd column? Ctrl+V G selects whole text. I am looking for a keyboard shortcut for selecting a whole column selection, if any exist.

Thanks.

+2  A: 

G goes to the last line, but moves the cursor to the first non-blank position if the startofline or compatible (which enables startofline) options are set. If you want to keep the same column, set nosol before going into visual block mode, and then hit G.

From the manual entry for startofline:

When "on" the commands listed below move the cursor to the first non-blank of the line. When off the cursor is kept in the same column (if possible). This applies to the commands: CTRL-D, CTRL-U, CTRL-B, CTRL-F, "G", "H", "M", "L", gg, and to the commands "d", "<<" and ">>" with a linewise operator, with "%" with a count and to buffer changing commands (CTRL-^, :bnext, :bNext, etc.).

Daniel Vandersluis
Nice, "set nosol" goes right into my .vimrc. I actually liked the deleted answer as well, for an unknown length file 9999j or a big number does the trick for the same column selection.
Gökhan Sever
If your .vimrc also sets `compatible`, make sure `set nosol` comes after that line.
Daniel Vandersluis
+1  A: 

[CTRL-V] enters block selection mode (allowing you to select rectangular blocks of text). In gvim this conflicts with Windows' paste shortcut, so you can use [CTRL-Q] instead.

Unfortunately, [CTRL-Q] [G] doesn't do what you'd like since the [G] motion moves linearly through the file, so you still need to rely on a using a counted [j] motion. You can avoid having to know exactly how big the file is by using an obscenely large count, like 9999. So the full command is [CTRL-Q] [9999j].

Alas I don't know of way that will avoid the ugly count hack offhand.

EDIT: Oh, I read your question too fast and missed that you already mentioned that you new about the visual block mode. I guess this is a pretty useless answer, then, sorry!

Josh Petrie
No worries :) an answer is an answer. Thanks for your time for reading and replying in any case.
Gökhan Sever