Vim Tips Wiki

Move function parameters with macro

Redirected from VimTip1077

1,624pages on
this wiki
Add New Page
Talk0 Share
Tip 1077 Printable Monobook Previous Next

created December 13, 2005 · complexity intermediate · author Robert Ames · version 5.7

"Move after next comma
nmap ,mc "zdiWxf,a <Esc>"zp

"Move until next parenthesis
nmap ,mp "zdiWxf)hi, <Esc>"zpx


foo = compare( "first", second, theThird );

Putting cursor on "first" and pressing ",mc" will move the "first" parameter after the following comma:

foo = compare( second, "first", theThird );

Putting cursor on "second" parameter and pressing ",mp" will move it to the parenthesis:

foo = compare( "first", theThird, second );

This is similar to the old "xp" trick (which will transpose two characters) with a delete and a put. The parameter under the cursor is snipped with "diW" (delete Inner FullWord), which will include the comma. To put it after a comma is simply a paste in the right spot (f,p). To put it as the last parameter, you've got to add a comma to the last paramter and remove its last comma.

This is dependent on spaces between parameters or will require some tweaking to match how you work. BE CAREFUL AS IT WILL EAT YOUR CODE IF YOU DON'T WATCH IT CLOSELY!

This tip changes the "z" register. Also, it looks like the tip doesn't correctly deal with strings that have spaces.


Swapping characters, words and lines has some mappings for swapping words around most any non-word characters (comma, equals, etc).

Slide visual highlighted words (on a line) back and forth to beginning/end-of-line, or by character/word. These mappings have protection against "code eating".

"shift word forward/backward
vmap <C-Left> <Esc>`<<Left>i<Esc>gvx`^Pgv<Left>o<Left>o
vmap <C-Right> <Esc>`><Right>gvxpgv<Right>o<Right>o
vmap <C-A-Left> <Esc>`<<S-Left>gvx<S-Left>Pgv`[o`]o
vmap <C-A-Right> <Esc>`><S-Right>gvxi<S-Right><C-r>"<Esc>gv`]o`[o<BS>
vmap <C-Home> x0Pv`]o`[
vmap <C-End> x$pv`[o`]

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Also on Fandom

Random Wiki