venk
venk

Reputation: 1105

Vim: How to pass arguments to functions from user commands?

I am trying to create a user-defined command in Vim that takes one argument and calls a function with the user-supplied argument. Seems simple but I am unable to get it to work. Here is the code from my foo.vim plugin:

function! s:MyFunc(myParam)
    do something
endfunction

command! -nargs=1 MyCommand call s:MyFunc(myParam)

When I try this out in a Vim buffer like this:

:MyCommand exampleParam

I get the following errors:

E121: Undefined variable: myParam
E116: Invalid arguments for function <SNR>7_MyFunc

What's wrong here? How do I fix this? Any help is greatly appreciated.

Upvotes: 56

Views: 28326

Answers (1)

JSBձոգչ
JSBձոգչ

Reputation: 41378

Use <f-args>:

command! -nargs=1 MyCommand call s:MyFunc(<f-args>)

Upvotes: 77

Related Questions