przetwarzanie zakończenia bash poszło nie tak, jak debugować?

9

Wszystko zaczęło się od prostego

alias gv='gvim --remote-quiet'

i teraz gv Space Tabnie daje nic tam, gdzie normalnie powinno dawać nazwy plików. Dziwnie,

alias gvi='gvim --remote-quiet'

działa zgodnie z oczekiwaniami. Oczywiście mam obejście, ale chciałbym wiedzieć, co przyłapuje mnie gvna specjalnym przetwarzaniu. compoptnie pomaga, ponieważ gvudostępnia te same ustawienia, lsco prawidłowe uzupełnianie nazw plików.

$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

completeKomenda jest nieco bardziej pomocne, ale nie mówi mi dlaczego moje dwie postacie, ale wyróżniony zmiany:

$ 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

Skąd się wziął complete -o filenames -F _filedir_xpec gv?

msw
źródło
1
+1 za kompletność i <kbd> Spacja </kbd> <kbd> Tab </kbd>
Aleksandr Levchuk

Odpowiedzi:

10

W końcu to rozumiem. Ukrywał się, w /etc/bash_completionsktórym - jak na ironię - przeoczyłem, ponieważ nie pojawił się na uzupełnieniach mojej nazwy pliku.

Pomocne bash_completions uważa, że gvto oznacza ghostview, że pozwoli mi tylko na uzupełnienie nazw plików, które według niego mogą być obsługiwane przez ghostview:

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

Myślę, że liczy się to jako „zbyt cholernie pomocne”. Dodawanie

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

do mojego ~/.bash_aliasespliku było wystarczające.

msw
źródło
Pozdrowienia! Świetne rozwiązywanie problemów!
dag729