le traitement d'achèvement bash a mal tourné, comment déboguer?


9

Tout a commencé par un simple

alias gv='gvim --remote-quiet'

et ne gv Space Tabdonne plus rien là où il devrait normalement donner des noms de fichiers. Bizarrement,

alias gvi='gvim --remote-quiet'

fonctionne comme prévu. J'ai clairement une solution de contournement, mais j'aimerais savoir ce qui m'attrape gvpour un traitement spécial. compoptne sert à rien car il gvpartage les mêmes paramètres que pour la lscomplétion correcte du nom de fichier.

$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

La completecommande est légèrement plus utile, mais elle ne me dit pas pourquoi mes deux personnages ont été sélectionnés pour être modifiés:

$ 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

D'où complete -o filenames -F _filedir_xpec gvvenait-il?


1
+1 pour être complet et <kbd> Espace </kbd> <kbd> Onglet </kbd>
Aleksandr Levchuk

Réponses:


10

Je l'ai enfin compris. Il se cachait dans /etc/bash_completionslequel - ironiquement - j'ai négligé car il n'apparaissait pas sur mes complétions de nom de fichier.

L'utile bash_completions pense que cela gvsignifie ghostviewqu'il ne me permettra que de compléter les noms de fichiers qu'il s'attend à ce que ghostview puisse gérer:

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

Je pense que cela compte comme "trop ​​sacrément utile". Ajouter

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

à mon ~/.bash_aliasesdossier était suffisant.


Compliments! Grand dépannage!
dag729
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.