From: "A.J.Mechelynck" <[EMAIL PROTECTED]>
Subject: Re: How to insert text via script/function call ?
Date: Fri, 18 Aug 2006 18:05:13 +0200

> Meino Christian Cramer wrote:
> > From: "A.J.Mechelynck" <[EMAIL PROTECTED]>
> > Subject: Re: How to insert text via script/function call ?
> > Date: Fri, 18 Aug 2006 07:29:05 +0200
> > 
> >> Meino Christian Cramer wrote:
> >>> Hi,
> >>>
> >>>  I often need to place a header above a function defintion (C-source)
> >>>  fpr documentational purposes.
> >>>
> >>>  What I treid is to write a short function for vim, which dioes insert
> >>>  the text skeleton -- but I did not find any already existing function
> >>>  in the API which does this for me. With :i I got weird effects --
> >>>  sure my fault, but... .
> >>>
> >>>  How can I insert text via a script ?
> >>>
> >>>  Kind regards,
> >>>  mcc
> >>>
> >>>
> >>>  
> >>>
> >>>
> >> If your text is in a file on its own, you can use ":r" with a line 
> >> number (the number of the line after which to insert, or 0 for "before 
> >> first line", or . for "after cursor line", or $ for "after last line"; 
> >> default is after cursor line) in the "range" position, i.e. just before 
> >> the r. The file name comes as an argument at the end.
> >>
> >> Example (after line 5):
> >>
> >>    5r ~/template.txt
> >>
> >> If your text is in a register, you can use ":put" with a line number 
> >> (again) in the range position and the register name (including ", which 
> >> must be escaped as \", for the default register; or + for the system 
> >> clipboard) after the ":put".
> >>
> >> Example (before cursor line):
> >>
> >>    .-1put \"
> >>
> >>
> >> See
> >>    :help :read
> >>    :help :put
> >>
> >>
> >> Best regards,
> >> Tony.
> >>
> > 
> > Hi Tony,
> > 
> >  thank you for your reply ! :)
> > 
> >  No, sorry...I was simply searching for a function call like
> > 
> >      printf( "This is my text!" )
> > 
> >  but instead of C and printing onto stdout it should be vim-script
> >  and the text should go right at the current cursor position.
> > 
> >  Thats all.
> >  No registers, no script magic, not extra files. Simply put a string
> >  after the cursor into the text.
> > 
> >  Keep hacking!
> >  mcc
> > 
> > 
> > 
> 
> (Untested):
> Characterwise:
>       exe "normal aThis is my text!\<Esc>"
> 
> Linewise:
>       exe "normal oThis is my text!\<Esc>"
> 
> If I didn't goof, you can paste one of the above lines straight into 
> your script (via the clipboard).
> 
> 
> Best regards,
> Tony.
> 

Hi Tony,

 this works so far...with an unwanted sideeffekt:

 Instead of

                 This is my text!

 in my buffer I get

             This is my text!<Esc>

 in my text.

 When using 

         exe "normal aThis is my text!"\<Esc>

 instead, vim says in the commandline:

         E121: Undefined variable: Esc
         E15 Invalid expression: "normalaThis is my text"<Esc>

 .

 No way out ?

 Kind regards,
 mcc

Reply via email to