देख :h :command-completion-custom
हम गिट द्वारा सूचीबद्ध केवल फाइलों को पूरा करने के लिए अंतिम उदाहरण को अनुकूलित कर सकते हैं।
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
में लिपटे *
हुए तर्क को पारित करके, हमारे लिए फ़िल्टरिंग करने के लिए कहते हैं ।