elaborazione di completamento bash andata a male, come eseguire il debug?


9

Tutto è iniziato con un semplice

alias gv='gvim --remote-quiet'

e ora gv Space Tabnon dà nulla dove normalmente dovrebbe dare nomi di file. Stranamente,

alias gvi='gvim --remote-quiet'

funziona come previsto. Chiaramente ho una soluzione alternativa, ma mi piacerebbe sapere cosa sta catturando gvper l'elaborazione speciale. compoptnon è di aiuto poiché gvcondivide le stesse impostazioni del lscompletamento corretto del nome file.

$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

Il completecomando è leggermente più utile, ma non mi dice perché i miei due personaggi siano stati individuati per l'alterazione:

$ 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

Da dove complete -o filenames -F _filedir_xpec gvviene?


1
+1 per completezza e <kbd> spazio </kbd> <kbd> scheda </kbd>
Aleksandr Levchuk

Risposte:


10

L'ho capito, finalmente. Si nascondeva in /etc/bash_completionscui - ironia della sorte - ho trascurato perché non compariva nei miei completamenti di nome file.

L'utile bash_completions pensa che ciò gvsignifichi, ghostviewquindi mi permetterà solo di completare i nomi dei file che si aspetta che ghostview possa gestire:

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

Penso che valga come "troppo dannatamente utile". Aggiunta

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

al mio ~/.bash_aliasesfile era sufficiente.


Complimenti! Grande risoluzione dei problemi!
dag729,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.