Bash-Abschluss-Verarbeitung schlecht gelaufen, wie debuggen?

9

Alles begann mit einem einfachen

alias gv='gvim --remote-quiet'

und gv Space Tabgibt jetzt nichts an, wo es normalerweise Dateinamen geben sollte. Seltsamerweise

alias gvi='gvim --remote-quiet'

funktioniert wie erwartet. Ich habe eindeutig eine Problemumgehung, aber ich würde gerne wissen, was mich gvfür eine spezielle Verarbeitung erwischt. compoptist keine Hilfe, da gvdieselben Einstellungen verwendet werden, mit lsdenen der Dateiname korrekt vervollständigt wird.

$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

Der completeBefehl ist etwas hilfreicher, sagt mir aber nicht, warum meine beiden Zeichen zur Änderung ausgewählt wurden:

$ 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

Woher kam complete -o filenames -F _filedir_xpec gves?

msw
quelle
1
+1 für die Vollständigkeit und <kbd> Leerzeichen </ kbd> <kbd> Tab </ kbd>
Aleksandr Levchuk

Antworten:

10

Ich habe es endlich verstanden. Es versteckte sich, in /etc/bash_completionsdem ich - ironischerweise - übersehen habe, da es auf meinen Dateinamen-Vervollständigungen nicht auftauchte.

Die hilfreichen bash_completions denken, dass dies gvbedeutet, ghostviewdass ich nur Dateinamen vervollständigen kann, von denen erwartet wird, dass Ghostview sie verarbeiten kann:

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

Ich denke, das gilt als "zu verdammt hilfreich". Hinzufügen

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

zu meiner ~/.bash_aliasesAkte war ausreichend.

msw
quelle
Komplimente! Tolle Fehlerbehebung!
dag729