Obtenha o preenchimento automático de nomes de script em $ PATH
Gostaria de saber como posso configurar o preenchimento automático de nomes de script no vim?
Por exemplo, digamos que eu tenha myscript.shem ~/bine ~/binesteja em meu $ PATH, gostaria de digitar mysvim e obter o preenchimento automático. Acho que deveria ser possível com CTRL-X CTRL-Uou, CTRL-X CTRL-Omas não sei como.
Nota: Eu já tenho um preenchimento Omni configurado por let & runtimepath apontando para um diretório de programa vim.
Obrigado pela ajuda !
Respostas
Uma maneira é escrever um completador personalizado:
function ShellCmd(findstart, base) abort
if a:findstart
" ... some logic here to find the start of a word
" ... example near `:help E839`
else
return split($PATH, ':')
\ ->map({_,v -> glob(v.'/*', v:true, v:true, v:true)})
\ ->flatten()
\ ->map({_,v -> fnamemodify(v, ':t')})
\ ->filter({_,v -> v =~# a:base})
endif
endfunction
Se você deseja corresponder apenas os comandos que começam com a:base, deve alterar o último filtro para v =~# '^'.a:base.
Atribuir completefunce usar <C-x><C-u>.
Ao escrever um comando personalizado, você pode usar -complete=shellcmd.