У меня есть эта функция:
function! Find(name)
let l:list=system("find . -name '".a:name."' | perl -ne 'print \"$.\\t$_\"'")
let l:num=strlen(substitute(l:list, "[^\n]", "", "g"))
if l:num < 1
echo "'".a:name."' not found"
return
endif
if l:num != 1
echo l:list
let l:input=input("Which ? (CR=nothing)\n")
if strlen(l:input)==0
return
endif
if strlen(substitute(l:input, "[0-9]", "", "g"))>0
echo "Not a number"
return
endif
if l:input<1 || l:input>l:num
echo "Out of range"
return
endif
let l:line=matchstr("\n".l:list, "\n".l:input."\t[^\n]*")
else
let l:line=l:list
endif
let l:line=substitute(l:line, "^[^\t]*\t./", "", "")
execute ":e ".l:line
endfunction
command! -nargs=1 Find :call Find("<args>")
Когда я пытаюсь добавить параметр, чтобы объявление стало function! Find(name, search_dir)
, оно всегда говорит мне, что у меня недостаточно параметров, когда я вызываю функцию в vim, используя :Find x y
(где Find: x
будет работать, когда в объявлении функции был только 1 параметр.
Есть идеи, как добавить несколько параметров?
Конечная цель состоит в том, чтобы иметь функцию Find, которая находит в указанном подкаталоге.