o processamento de conclusão do bash foi ruim, como depurar?

9

Tudo começou com um simples

alias gv='gvim --remote-quiet'

e agora gv Espaço Tab não fornece nada onde normalmente deveria dar nomes de arquivos. Estranhamente,

alias gvi='gvim --remote-quiet'

funciona como esperado. Eu claramente tenho uma solução alternativa, mas gostaria de saber o que está pegando meu gv para processamento especial. compopt não ajuda, pois gv compartilha as mesmas configurações que ls , o que faz a conclusão do 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 comando complete é 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 veio complete -o filenames -F _filedir_xpec gv ?

    
por msw 17.05.2010 / 21:05

1 resposta

10

Eu entendi, finalmente. Ele estava escondido em /etc/bash_completions , o que, ironicamente, deixei passar, já que ele não apareceu nas conclusões do meu nome de arquivo.

As bash_completions úteis acham que gv significa ghostview , portanto, só me permitirá preencher 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 arquivo ~/.bash_aliases foi suficiente.

    
por 17.05.2010 / 21:12