Видеть :h :command-completion-custom
Мы можем адаптировать последний пример, чтобы завершить только файлы, перечисленные в git.
command! -nargs=1 -bang -complete=customlist,GitFindComplete
\ GitFind edit<bang> <args>
function! GitFindComplete(ArgLead, CmdLine, CursorPos)
let search_pattern = "*" . a:ArgLead . "*"
let shell_cmd = "git ls-files " . shellescape(search_pattern)
return split(system(shell_cmd), "\n")
endfunction
Теперь вы можете использовать автозаполнение, чтобы открыть файлы, перечисленные в git:
:GitFind ome_f<Tab>
Обратите внимание, что в пользовательской функции завершения мы должны сделать больше, чем просто перечислить файлы, которые можно завершить. Мы должны также фильтровать список относительно текущего аргумента командной строки ArgLead
. В этом примере, мы просим , git
чтобы сделать фильтрацию для нас, передав ей аргумент , завернутый в *
подстановочных знаках.