processamento de conclusão do bash deu errado, como depurar?

9

Tudo começou com um simples

alias gv='gvim --remote-quiet'

e agora gv Space Tabnão dá nada onde normalmente deveria dar nomes de arquivos. Estranhamente,

alias gvi='gvim --remote-quiet'

funciona como esperado. Eu tenho claramente uma solução alternativa, mas gostaria de saber o que está pegando no meu gvprocessamento especial. compoptnão ajuda, pois gvcompartilha as mesmas configurações lsque completam o nome do arquivo corretamente.

$compopt gv
compopt +o bashdefault +o default +o dirnames -o filenames +o nospace +o plusdirs gv
$ compopt ls
compopt +o bashdefault +o default +o dirnames -o filenames +o nospace +o plusdirs ls

O completecomando é um pouco mais útil, mas não me diz por que meus dois personagens foram escolhidos para alteração:

$ complete -p gv
complete -o filenames -F _filedir_xspec gv
$ complete -p ls
complete -o filenames -F _longopt ls
$ complete -p echo
bash: complete: echo: no completion specification
$ alias gvi='gvim --remote-silent'
$ complete -p gvi
bash: complete: gvi: no completion specification

De onde complete -o filenames -F _filedir_xpec gvveio?

msw
fonte
1
+1 para completar e <kbd> Espaço </kbd> <kbd> Guia </kbd>
Aleksandr Levchuk

Respostas:

10

Eu entendi finalmente. Estava escondido no /etc/bash_completionsqual - ironicamente - eu esqueci, pois não apareceu nas conclusões do meu nome de arquivo.

O útil bash_completions acha que isso gvsignifica, ghostviewportanto, ele só permitirá que eu complete nomes de arquivos que espera que o ghostview possa manipular:

complete -f -X '!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?' gv ggv kghostview

Eu acho que isso conta como "muito útil". Adicionando

alias gv='gvim --remote-silent'
complete -r gv 

para o meu ~/.bash_aliasesarquivo foi suficiente.

msw
fonte
Elogios! Ótima solução de problemas!
Dag729 17/05