Побачити :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
зробити фільтрацію для нас, передавши їй аргумент, загорнутий у *
підстановку.