簡體   English   中英

無法在 vim 中將文件路徑作為 function 參數傳遞

[英]Can't pass filepath as function argument in vim

我的 vimrc 中有這個 function:

function! MyFunc(fl)
  :!cat fl
" :!cat a:fl
" :!cat &fl
endfunction
command! -nargs=1 RunFunc :call MyFunc(<f-args>)

問題是當我在 vim 命令中運行:RunFunc ~/scripts/0-test時,出現錯誤:

cat: f: No such file or directory
shell returned 1

我看過各種網站,例如thisthisthisthisthis ,但沒有一個對我有用。

首先,您不需要在腳本上下文中使用該冒號:

function! MyFunc(fl)
  !cat fl
endfunction
command! -nargs=1 RunFunc :call MyFunc(<f-args>)

其次,你不能傳遞這樣的表達式。 您需要將整個事情與:help:execute連接起來:

function! MyFunc(fl)
  execute "!cat " .. fl
endfunction
command! -nargs=1 RunFunc :call MyFunc(<f-args>)

第三, function arguments 鍵入a:

function! MyFunc(fl)
  execute "!cat " .. a:fl
endfunction
command! -nargs=1 RunFunc :call MyFunc(<f-args>)

至於網站……它們沒用。 Vim 附帶了一個詳盡的文檔,當你遇到某些事情時,它應該是你的第一擊,而且恰巧用戶手冊——這是強制性閱讀——有一整章關於編寫 vimscript: :help usr_41.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM