Friday, April 7, 2017

Re: execute sub command without moving cursor

Le jeudi 6 avril 2017 17:33:15 UTC+2, Ben Fritz a écrit :
> On Wednesday, April 5, 2017 at 4:56:06 PM UTC-5, ZyX wrote:
> > 2017-04-05 22:21 GMT+03:00 Ni Va <nivaemail@gmail.com>:
> > > Hi,
> > >
> > >
> > > I use this kind of command but it moves my cursor pos.
> > >
> > >
> > > silent! exe '?^BEGIN?,/^END/s/^NETWORK.*$/\="NETWORK".s:inc()." \/\/In ".s[0]." : ".s[1]/e'
> > >
> > >
> > > Can I avoid to move cursor when I replace executing sub command ?
> > > Thanks
> > > niva
> >
> > You can restore it afterwards: use winsaveview()+winrestview().
> > Otherwise you will have to emulate `:substitute` with search() and
> > setline() and this is going to be way too tricky.
> >
>
> Depending on what you're trying to do, winsaveview()/winrestview() may be overkill and a simple `` in normal mode may suffice. Or ma/`a.
>
> Although maybe I should map something to winsaveview()/winrestview() one of these days...

Then I wrote this little code :

function! s:getPatternCount(begL,endL,pattern)
let netrkC = 0
if copy(a:begL) < copy(a:endL)
for lnum in range(copy(a:begL), copy(a:endL))
if stridx(copy(getline(lnum)), copy(a:pattern)) == 0
let netrkC += 1
endif
endfo
endif
return netrkC
endfu
let networkCount = s:getPatternCount(copy(s:getPreviousLineBlock()), v:beval_lnum, 'NETWORK')

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments: