Xem :h :command-completion-custom
Chúng ta có thể điều chỉnh ví dụ cuối cùng để hoàn thành chỉ các tệp được liệt kê bởi 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
Bây giờ bạn có thể sử dụng tự động hoàn thành để mở các tệp được liệt kê bởi git:
:GitFind ome_f<Tab>
Lưu ý rằng trong một chức năng hoàn thành tùy chỉnh, chúng ta phải làm nhiều hơn là chỉ liệt kê các tệp có thể được hoàn thành. Chúng ta cũng phải lọc danh sách liên quan đến đối số dòng lệnh hiện tại ArgLead
. Trong ví dụ này, chúng tôi yêu cầu git
thực hiện việc lọc cho chúng tôi, bằng cách chuyển cho nó đối số được gói trong các *
ký tự đại diện.