2010-07-09 13 views
37

Tôi đang cố gắng tạo một lệnh do người dùng định nghĩa trong VIM lấy một đối số và gọi hàm với đối số do người dùng cung cấp. Có vẻ đơn giản nhưng tôi không thể làm cho nó hoạt động. Đây là đoạn mã từ plugin foo.vim tôi:VIM: Làm thế nào để chuyển đối số cho các hàm từ các lệnh của người dùng?

function! s:MyFunc(myParam) 
    do something 
endfunction 

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

Khi tôi cố gắng này ra trong một bộ đệm VIM như thế này:

:MyCommand exampleParam 

tôi nhận được các lỗi sau đây:

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

Có gì sai ở đây? Làm thế nào để sửa lỗi này? Bất kỳ trợ giúp nào cũng được đánh giá rất cao.

Trả lời

50

Sử dụng <f-args>:

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

Nó hoạt động! Cảm ơn bạn! Cảm ơn bạn! và một lần nữa: Cảm ơn bạn !!! – venk

+0

Tôi không chắc chắn '!' Có nghĩa là ... nó có nghĩa là ghi đè lên lệnh hiện tại. Tôi thấy hữu ích: http://www.adp-gmbh.ch/vim/user_commands.html \t > ': com!' 'Hiện tại-cmd-name cmd-replacement' – alockwood05

Các vấn đề liên quan