2010-07-09 20 views
37

Próbuję utworzyć polecenie zdefiniowane przez użytkownika w VIM, które przyjmuje jeden argument i wywołuje funkcję z argumentem dostarczonym przez użytkownika. Wydaje się proste, ale nie mogę go uruchomić. Oto kod z mojego foo.vim plugin:VIM: Jak przekazywać argumenty do funkcji z poleceń użytkownika?

function! s:MyFunc(myParam) 
    do something 
endfunction 

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

Kiedy próbuję to w buforze VIM tak:

:MyCommand exampleParam 

uzyskać następujące błędy:

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

Co jest nie tak? Jak to naprawić? Każda pomoc jest bardzo doceniana.

Odpowiedz

50

Zastosowanie <f-args>:

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

To działa! Dziękuję Ci! Dziękuję Ci! i jeszcze raz: dziękuję !!! – venk

+0

Nie byłem pewien, co oznaczało '!' ... oznacza zastąpienie istniejącego polecenia. Znalazłem to pomocne: http://www.adp-gmbh.ch/vim/user_commands.html \t > ': com!' 'Istniejące-cmd-name cmd-replacement' – alockwood05

Powiązane problemy