I started to use gvim, and I can't quite understand how the multiline edit works in gvim.
For example:
Original text:
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
ctrl+q, jjjjjj , $
everything is selected, then i press I to do a multiline insert.
My intention is to insert quotes like in the first line, and then to press Esc:
asd "asd asd" asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
asd asd asd asd asd;
What happened? I expected a behavior similar to sublimetext's one:
If you don't know how that works, it just repeats the actions for every line. How can achieve that? And what is vim doing here?
Best Answer
Do yourself a favor by dropping the Windows compatibility layer.
The normal shortcut for entering Visual-Block mode is
<C-v>
.Others have dealt with recording macros, here are a few other ideas:
Using only visual-block mode.
Put the cursor on the second word:
Hit
<C-v>
to enter visual-block mode and expand your selection toward the bottom:Hit
I"<Esc>
to obtain:Put the cursor on the last char of the third word:
Hit
<C-v>
to enter visual-block mode and expand your selection toward the bottom:Hit
A"<Esc>
to obtain:With visual-block mode and Surround.vim.
Put the cursor on the second word:
Hit
<C-v>
to enter visual-block mode and expand your selection toward the bottom and the right:Hit
S"
to surround your selection with ":With visual-line mode and
:normal
.Hit
V
to select the whole line and expand it toward the bottom:Execute this command:
:'<,'>norm ^wi"<C-v><Esc>eea"<CR>
to obtain::norm[al]
allows you to execute normal mode commands on a range of lines (the'<,'>
part is added automatically by Vim and means "act on the selected area")^
puts the cursor on the first char of the linew
moves to the next wordi"
inserts a"
before the cursor<C-v><Esc>
is Vim's way to input a control character in this context, here it's<Esc>
used to exit insert modeee
moves to the end of the next worda"
appends a"
after the cursor<CR>
executes the commandUsing Surround.vim, the command above becomes