Lihat :h :command-completion-custom
Kita dapat mengadaptasi contoh terakhir untuk menyelesaikan hanya file yang terdaftar oleh 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
Sekarang Anda dapat menggunakan pelengkapan otomatis untuk membuka file yang terdaftar oleh git:
:GitFind ome_f<Tab>
Perhatikan bahwa dalam fungsi penyelesaian kustom, kita harus melakukan lebih dari sekadar daftar file yang dapat diselesaikan. Kita juga harus memfilter daftar relatif terhadap argumen commandline saat ini ArgLead
. Dalam contoh ini, kami meminta git
untuk melakukan penyaringan untuk kami, dengan memberikan argumen yang dibungkus dengan *
wildcard.