2010-07-09 4 views
37

Estoy intentando crear un comando definido por el usuario en VIM que toma un argumento y llama a una función con el argumento proporcionado por el usuario. Parece simple, pero no puedo hacer que funcione. Aquí está el código de mi plug-in foo.vim:VIM: ¿Cómo pasar argumentos a las funciones de los comandos del usuario?

function! s:MyFunc(myParam) 
    do something 
endfunction 

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

Cuando intento esto en un tampón VIM como esto:

:MyCommand exampleParam 

que obtienen los siguientes errores:

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

¿Qué pasa aquí? ¿Cómo puedo solucionar esto? Cualquier ayuda es muy apreciada.

Respuesta

50

Uso <f-args>:

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

Funciona! ¡Gracias! ¡Gracias! y nuevamente: ¡¡¡Gracias !!! – venk

+0

No estaba seguro de lo que significaba el '!', Significa sobrescribir el comando existente. Encontré esto útil: http://www.adp-gmbh.ch/vim/user_commands.html \t > ': com!' 'Existing-cmd-name cmd-replacement' – alockwood05

Cuestiones relacionadas