Vim Tips Wiki
(Change to TipImported template + severe manual clean)
(Move categories to tip template)
Line 9: Line 9:
 
|version=6.0
 
|version=6.0
 
|rating=9/6
 
|rating=9/6
  +
|category1=
  +
|category2=
 
}}
 
}}
 
I often come across lines like these:
 
I often come across lines like these:

Revision as of 04:22, 25 April 2008

Tip 766 Printable Monobook Previous Next

created July 26, 2004 · complexity intermediate · author Levin Du · version 6.0


I often come across lines like these:

p_ST->localconnectionOption->typeofService = 0;
p_ST->localconnectionOption->gain = 0;
p_ST->localconnectionOption->r_reservation = 0
p_ST->localconnectionOption->r_re

Though Vim has completion mode, it's a wasting time of repeately typing 'p_ST->local<C-N>->...'. So I write this mapping:

:inoremap <c-f> <ESC>:let g:saved_col=virtcol(".")<CR>ddkYp:exe "normal ".(g:saved_col+1)."\|"<CR>C

Take above lines for example. First, I type one line (with autoindent turn on, the cursor position is shown as "|" after finishing the line with Return):

p_ST->localconnectionOption->typeofService = 0;
|

then I use <Tab> and <Space> to move the cursor to the right place:

p_ST->localconnectionOption->typeofService = 0;
                                                   |

and press <Ctrl>-f, can you see the magic? It turns out to:

p_ST->localconnectionOption->typeofService = 0;
p_ST->localconnectionOption->|

Comments

Here's an alternative mapping.

ino <silent> <c-f> <c-o>:exe "norm! kly0jPD"<cr>

I want to recommend <C-X><C-L> - line completion. Not exactly the same as this, but useful in similar situations. After a line completion, you can use <C-P> and <C-N> as usual for previous and next match.

See :help ins-completion.


What about <C-X><C-N>? I just discovered this recently as something between "whole-line completion" <C-X><C-L> and "word completion" <C-N>. It works like <C-N> completion, but it's more like "complete more".

So from the previous example:

p_ST->localconnectionOption->typeofService = 0;

type:

p_<C-N>

you get:

p_ST

type:

<C-X><C-N>

you get:

p_ST->localconnectionOption

type:

<C-X><C-N>

you get:

p_ST->localconnectionOption->typeofService

No spacing/tabbing and scripting necessary!