ดู :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
รายการเทียบกับอาร์กิวเมนต์ commandline ปัจจุบัน ในตัวอย่างนี้เราขอgit
ให้ทำการกรองสำหรับเราโดยส่งผ่านอาร์กิวเมนต์ที่ห่อด้วย*
อักขระตัวแทน