El proceso de finalización de bash salió mal, ¿cómo depurar?

9

Todo comenzó con un simple

alias gv='gvim --remote-quiet'

y ahora gv Space Tabno da nada donde normalmente debería dar nombres de archivo. Extrañamente,

alias gvi='gvim --remote-quiet'

Funciona como se esperaba. Claramente tengo una solución, pero me gustaría saber qué es lo que me atrapa gvpara un procesamiento especial. compoptno es de ayuda ya que gvcomparte la misma configuración lsque la que completa correctamente el nombre de archivo.

$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

El completecomando es un poco más útil, pero no me dice por qué mis dos personajes fueron seleccionados por alteración:

$ 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

¿De donde complete -o filenames -F _filedir_xpec gvvino?

msw
fuente
1
+1 para completar y <kbd> Espacio </kbd> <kbd> Tab </kbd>
Aleksandr Levchuk

Respuestas:

10

Lo tengo, finalmente. Estaba escondido en lo /etc/bash_completionsque, irónicamente, pasé por alto ya que no aparecía en las finalizaciones de mi nombre de archivo.

El útil bash_completions cree que eso gvsignifica ghostviewque solo me permitirá completar los nombres de archivo que espera que ghostview pueda manejar:

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

Creo que eso cuenta como "demasiado útil". Agregando

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

para mi ~/.bash_aliasesarchivo fue suficiente.

msw
fuente
¡Felicitaciones! Gran solución de problemas!
dag729