How do you select a whole column in visual block mode?

Vim

Vim Problem Overview


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.

Vim Solutions


Solution 1 - Vim

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!

Solution 2 - Vim

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.).

Solution 3 - Vim

The easy way for selecting column you can use plugin [vis.vim]( http://vim.sourceforge.net/scripts/script.php?script_id=1195 "Vis.vim")

go to visual mode, select column ctrl+v , then you can do whatever you want with it

Use V, v or Ctrl+V to visually mark some region.Then type :B cmd (this command will appear as: :'<,'>B cmd)

The command will then be applied to just the visually selected region.

For example:

Use ctrl-v to select a column and then do a substitute on just that column.

Ctrl-V ..move.. :B s/pattern/becomes/

Use Ctrl-V to select a column, then apply an external filter to just that column:

Ctrl-V ..move.. :B !sort

Solution 4 - Vim

I'm sure I'm not the only one who came here looking for a solution to a more general problem. Say I have:

Some text.

one two three
one two three
one two three
one two three
one two three
one two three

Some more text.

The following macro will select eg. all of the 'two' column when the cursor is anywhere inside it:

<C-v>iWmw{joO`woOmwoO}koO`w

How it works

  • <C-v>iW visual block select in Word (can of course have different macros for iw, a" etc.)
  • mw Set mark at the right boundary
  • {j Go to the start of the paragraph

Assuming you started somewhere in the middle, at this point your selection will look like this, where uppercase represents selected characters and $ represents the cursor:

Some text.

$NE Two three
ONE Two three
ONE Two three
one two three
one two three
one two three

Some more text.

oO swaps the cursor to the corner on the same side (left) but the other end (bottom):

Some text.

ONE Two three
ONE Two three
$NE Two three
one two three
one two three
one two three

Some more text.

`w will now get you back to the right boundary:

Some text.

one TWO three
one TWO three
one TW$ three
one two three
one two three
one two three

Some more text.

oOmwoO}koO`w repeats the process for going down to the bottom of the paragraph.

Result:

Some text.

one TWO three
one TWO three
one TWO three
one TWO three
one TWO three
one $WO three

Some more text.

Solution 5 - Vim

If you are at the beginning of the first line you can do:

ww ............... jump to the third column
Ctrl-v } ......... jump to the end of paragraph

If you have a blank line after just type then:

gE ............... goes back to the end of third column

Solution 6 - Vim

ctrl+shift+v is visual block. So just press ctrl+shift+v and then use cursor keys to select what you want. enter image description here

There is also ctrl+shift+I for block insert

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionG&#246;khan SeverView Question on Stackoverflow
Solution 1 - Vimuser197015View Answer on Stackoverflow
Solution 2 - VimDaniel VandersluisView Answer on Stackoverflow
Solution 3 - VimgarmjsView Answer on Stackoverflow
Solution 4 - VimIgidView Answer on Stackoverflow
Solution 5 - VimSergioAraujoView Answer on Stackoverflow
Solution 6 - VimMaheshView Answer on Stackoverflow