Ver :h :command-completion-custom
Podemos adaptar el último ejemplo para completar solo los archivos listados por 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
Ahora puede usar el autocompletado para abrir los archivos listados por git:
:GitFind ome_f<Tab>
Tenga en cuenta que en una función de finalización personalizada, debemos hacer más que simplemente enumerar los archivos que podrían completarse. También debemos filtrar la lista en relación con el argumento actual de la línea de comandos ArgLead
. En este ejemplo, le pedimos git
que haga el filtrado por nosotros, pasándole el argumento envuelto en *
comodines.