execute sub command without moving cursor

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

execute sub command without moving cursor

Ni Va
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 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 [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: execute sub command without moving cursor

Nikolay Aleksandrovich Pavlov
2017-04-05 22:21 GMT+03:00 Ni Va <[hidden email]>:

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

>
> --
> --
> 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 [hidden email].
> For more options, visit https://groups.google.com/d/optout.

--
--
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 [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: execute sub command without moving cursor

Ni Va
Le mercredi 5 avril 2017 23:56:06 UTC+2, ZyX a écrit :

> 2017-04-05 22:21 GMT+03:00 Ni Va <[hidden email]>:
> > 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.
>
> >
> > --
> > --
> > 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 [hidden email].
> > For more options, visit https://groups.google.com/d/optout.
Some post said that it is safer to effectively use

search() and
setline()

Thank you

--
--
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 [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: execute sub command without moving cursor

Ben Fritz
In reply to this post by Nikolay Aleksandrovich Pavlov
On Wednesday, April 5, 2017 at 4:56:06 PM UTC-5, ZyX wrote:

> 2017-04-05 22:21 GMT+03:00 Ni Va <[hidden email]>:
> > 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...

--
--
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 [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: execute sub command without moving cursor

Ni Va
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 <[hidden email]>:
> > > 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 [hidden email].
For more options, visit https://groups.google.com/d/optout.