[EMAIL PROTECTED] wrote:

>Hi,
>
>I want to assign the current line under the cursort to an external
>program. Example
>
>Textfile:
>1 foo
>2 bar
>3 calvin
>4 hobbes
>
>If the cursor is in line 2, want to assign the line "2 bar" to a
>script, like foo.sh.
>
>If I want to call a external script from vim I type in the command
>modus:
>
>:! foo.sh [and hit enter]
>
>Now I want to assign the line in the file to the script via a function
>into the .vimrc.
>
>I know how to get the line, but I dont know how to assign it to the
>external script. Or better I dont know how to use the variale to
>assign the parameter to the script. Basicly I have this in my .vimrc
>
>function Foo(  )
>    :let start=line( '.' )
>    :! foo.sh getline(start) "this dont work :(
>endfunction
>
>command Foo call Foo(  )
>
>This returns the errormessage:
>/bin/bash: -c: line 0: syntax error near unexpected token `('
>/bin/bash: -c: line 0: ` foo.sh getline( start )'
>  
>
* the ":"s aren't needed in your "Foo" function; you're already in Ex mode.
* some reading is in order; read the help on   exe, filter, system()

Your Foo function got the current line number, then passed
   ! foo.sh getline(start)

to the shell.  You shell didn't know what to do with getline(start), 
which I'm supposing was intended not for the shell to handle but for 
vim.  Consider

  exe "!foo.sh '".getline(start)."'"

or

  call system("foo.sh '".getline(start)."'")

where I'm quoting the entire string received from getline in single quotes.

Regards,
Chip Campbell


--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Raspunde prin e-mail lui