Fandom

Vim Tips Wiki

Yank last line and trim to the cursor

1,624pages on
this wiki
Add New Page
Talk0 Share

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.

Tip 766 Printable Monobook Previous Next

created 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->|

CommentsEdit

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!


It is worth to mention CTRL-y (and CTRL-e) and the wordwise CTRL-y tip on this occasion - http://vim.wikia.com/wiki/Wordwise_Ctrl-Y_in_insert_mode.

Also on Fandom

Random Wiki