[CentOS] Vim scripting - cursor motion

Fri Jun 10 20:49:34 UTC 2011
flapeccino <flapeccino at gmail.com>

Jussi

I tried various ways but it seems the only way to insert a line from a
script is to use the append() function  (do help append) specifying the line
number as a parameter.

I tried it on with an example script "moo.vim" as shown below

flapeccino at T4410 ~
$ cat moo.vim
:1,$s/  /,/g
:call append(0,"This is the first line")
:call append(line('$'),"This is the last line")
:w foox
:q!
flapeccino at T4410 ~
$ cat foo
one     two     three   four
1       2       3       4
ichi    ni      san     shi
flapeccino at T4410 ~
$ vi -s moo.vim foo
flapeccino at T4410 ~
$ cat foox
This is the first line
one,two,three,four
1,2,3,4
ichi,ni,san,shi
This is the last line
flapeccino at T4410 ~


BTW thank you for this, I have been using vi for a very long time, and I
never realized until now that  at least in its vim incarnation it has such a
powerful scripting language.  I've used sed/awk/perl but never happily and
always felt an inferiority complex to the emac brethrens showing off with
their emac lisp macros.  It must be a deficiency but my fingers never could
do emacs.



On Fri, Jun 10, 2011 at 11:42 AM, Les Mikesell <lesmikesell at gmail.com>wrote:

> On 6/10/2011 1:03 PM, Jussi Hirvi wrote:
> > On 10.6.2011 18.39, flapeccino at gmail.com wrote:
> >> There is a good article on vimscript here:
> >>
> http://www.ibm.com/developerworks/linux/library/l-vimscript-1/index.html)
> >
> > Sorry there was a typo, the correct URL is:
> >
> http://www.ibm.com/developerworks/linux/library/l-vim-script-1/index.html
> >
> > Thanks, I found that already, and it is a good one. But it didn't help
> > me solve my problem about cursor motions.
> >
> > Maybe my question is wrong - maybe I should just use line ranges in
> > commands, for example for the first line:
> >       :1,1s/foo/bar/g
> > and for the last line:
> >       :$,$s/foo/bar/g
>
> I thought the point of using vim instead of something more appropriate
> for scripting was that you already knew how to use it.  Why not do:
> vim -W script testfile
> and go through the motions you know (which can include 1G to go to the
> 1st line and G to go to the last).
> Then run
> vim -s script realfile
> to do the same actions again.
>
> --
>   Les Mikesell
>    lesmikesell at gmail.com
>  _______________________________________________
> CentOS mailing list
> CentOS at centos.org
> http://lists.centos.org/mailman/listinfo/centos
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.centos.org/pipermail/centos/attachments/20110610/e1bc785f/attachment-0004.html>