por que a conclusão não funciona para todos os aliases?

2

No meu arquivo .bash_aliases , tenho alguns aliases, como -

shopt -s expand_aliases
alias emx='emacs'
alias em='emacs -nw'
alias gv='gvim'
alias v='vi'
alias ev='evince'

quando eu os uso e pressiono [tab] para preenchimento automático, eles funcionam -

:~/$ emx main-0 [press tab]
main-04.cpp       main-05.cpp       main-06.cpp       main-06-test.cpp 

ou

:~/$ em main-0 [press tab]
main-04.cpp       main-05.cpp       main-06.cpp       main-06-test.cpp 

ambos para emx e em funcionam (também ev funciona), mas quando tento usar gv ou v , isso não acontece -

:~/$ gv main-0 [press tab]
<nothing happens>

por que?

    
por ramgorur 28.10.2014 / 18:11

2 respostas

3

Caso seja um ponto de confusão, expand_aliases determina se aliases são verificados ao processar comandos, é algo totalmente diferente de conclusão .

Parece que você tem a configuração de conclusão por comando, verifique a saída de complete (sem argumentos). gv é convencionalmente o comando ghostview , portanto, é possível que gv completion esteja apenas pesquisando arquivos PS / EPS / PDF.

    
por 28.10.2014 / 19:02
0

Antes de mais nada, o preenchimento automático do Bash simplesmente lê o que você coloca na linha de comando sem resolver aliases. Se você colocar o nome do comando, ele lerá o nome do comando. Se você colocar um alias, então ele lê o alias. Então, no que diz respeito à conclusão, gv não tem nada a ver com gvim no seu caso. De fato, gv é um nome definido no script bash-completion como:

_install_xspec '!*.@(@(?(e)ps|?(E)PS|pdf|PDF)?(.gz|.GZ|.bz2|.BZ2|.Z))' gv ggv kghostview
complete -F _filedir_xspec gv

Então, basicamente, ele só combina arquivos ps e pdf não compactados e compactados.

AFAIK você tem 2 maneiras de lidar com isso:

  1. Defina a conclusão do alias para gv para uma função diferente. Por exemplo, _longopt funciona no seu caso:

    complete -F _longopt gv
    
  2. Escreva uma função de conclusão de alias genérica e use-a em gv . Felizmente, alguém fez isso por você: link

por 14.08.2018 / 02:50