History Report a problem
Article Edit this page Discussion

Applying substitutes to a visual block

From Vim Tips Wiki

Jump to: navigation, search

Tip 63 Previous TipNext Tip

Created: March 28, 2001 Complexity: intermediate Author: Chip Campbell Minimum version: 5.7 Karma: 151/44 Imported from: Tip#63


If you'd like to apply a substitute, or even any Ex command, to a text region you've selected using visual-blocks (i.e. ctrl-v and move, or ctrl-q in Windows), then you'll be wanting to use Charles Campbell's vis.vim plugin, available at http://mysite.verizon.net/astronaut/vim/index.html#VIS

Note that applying Ex commands to a simple visual selection is a much simpler process, as is searching in a visual selection (see Tip 438). The vis.vim plugin is useful for applying Ex commands to the area of a blockwise visual selection.

It's a plugin and comes as a vimball; so to install it with Vim 7.1 just

vim vis.vba.gz
:so %
:q

Once installed:

ctrl-v (or ctrl-Q if using default mswin mappings) (move)
:B s/pattern/newtext/

You can also perform any Ex command (:B !sort, for example). On the command line, when you enter :B, what you'll actually see is:

:'<,'>B s/pattern/newtext/

Just continue with the substitute or whatever...

:'<,'>B s/abc/ABC/g

and the substitute will be applied to just that block of text!

Example: ctrl-v move-to-select the central four "abc"s

Initial           Select inner four "abc"s     :B s/abc/ABC/g
abcabcabcabc       abc--------abc              abcabcabcabc
abcabcabcabc       abc|abcabc|abc              abcABCABCabc
abcabcabcabc       abc|abcabc|abc              abcABCABCabc
abcabcabcabc       abc--------abc              abcabcabcabc

Vis.vim will also work with V (visual-line) and v (visual-character) selections.

Often it is used to change a variable. It's not the only way that the substitute can be done (you can use column selection regexp patterns), but it is, perhaps, more straightforward. As another example:

Initial                  After Substitute:
printf("...",            printf("...",
abc[0],def[0],def[0],    abc[0],def[0],DEF[0],
abc[1],def[1],def[1],    abc[1],def[1],DEF[1],
abc[2],def[2],def[2],    abc[2],def[2],DEF[2],
abc[3],def[3],def[3],    abc[3],def[3],DEF[3],

To do this, use ctrl-v and motion to select the defs, then apply the substitute:
:B s/def/DEF/

[edit] Comments


Rate this article:

Share this article:

Hubs Highlights International Sites Wikia messages
Entertainment
Gaming
Cartoons & Comics
Science Fiction
Hobbies
Sports
See all...
Grand Theft Auto
Pushing Daisies
Legend of Zelda Wiki
Terminator Wiki
Everquest II Wiki
Astronomy Wiki
German
Spanish
Chinese
Japanese
More...
Wikia is hiring for several open positions


Vote for featured Wikia!

Send this article to a friend
"Applying substitutes to a visual block"
 
 
Hi!

I thought you'd like this page from Wikia!

http://vim.wikia.com

Come check it out!
Send confirmation