Utilizo completar pestañas más que escribir letras. Solía escribir rm ~/De<TAB>
y se completaría para rm ~/Desktop/
poder continuar en el siguiente nivel.
Recientemente, ese comportamiento cambió. La finalización ahora produce rm ~/Desktop<SPACE>
, lo que significa que debo retroceder y escribir la barra diagonal si quiero continuar. Esto me hace llorar.
Los cambios parecen estar situada en la función _longopt()
de /etc/bash_completion
, sin embargo, que es por lo que yo puedo seguir. ¿Es este cambio intencional y, de ser así, para qué sirve? ¿Puedo recuperar el comportamiento anterior, preferiblemente mediante una opción de configuración en lugar de simplemente copiar el código anterior desde algún otro sistema?
Editar: La función de referencia.
_longopt()
{
local cur prev split=false
_get_comp_words_by_ref -n = cur prev
_split_longopt && split=true
case "$prev" in
--*[Dd][Ii][Rr]*)
_filedir -d
return 0
;;
--*[Ff][Ii][Ll][Ee]*|--*[Pp][Aa][Tt][Hh]*)
_filedir
return 0
;;
esac
$split && return 0
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W "$( $1 --help 2>&1 | \
sed -ne 's/.*\(--[-A-Za-z0-9]\{1,\}\).*/\1/p' | sort -u )" \
-- "$cur" ) )
elif [[ "$1" == @(mk|rm)dir ]]; then
_filedir -d
else
_filedir
fi
}
rmdir
, no paramkdir
otouch
._longopt()
función?readline
configuración (¿tiene un~/inputrc
archivo?) Y del hecho de que el elemento es un directorio real o un enlace simbólico a un directorio..inputrc
en este sistema. (Esos eran los días, arreglando las teclas de retroceso y cursor ...) Y sucede para todos los elementos, directorio o archivo, enlace simbólico o no.Respuestas:
Este es un error conocido. Vea esta pregunta de LP y estos errores 1 2 .
Este comentario parece ser la solución. Si no puede esperar a que una solución se filtre por los canales normales, edite la
/etc/bash_completion
línea 1587, cambiedefault
afilenames
(haga una copia de seguridad primero).fuente
/etc/bash_completion
línea 1587, cambiedefault
afilenames
.Tuve y resolví el mismo problema después de instalar Adobe Reader en Ubuntu 12.04.
Comenté el
_filedir
bloqueo/etc/bash_completion.d/acroread.sh
y funcionó normalmente de nuevo.fuente
_filedir
bloque (justo en la parte superior) lo arregló. Tienes que cerrar sesión o ejecutar 'exec bash' en todos tus shells para ver el efecto, mira esta pregunta .Tuve el mismo problema y lo solucioné eliminando el directorio /etc/bash_completion.d/, luego reinstalé bash_completion. Supongo que un archivo antiguo estaba en este directorio ... Espero que también resuelva su problema.
fuente
bash-completion
, uno de los archivos restantes/etc/bash_completion.d/
debe ser el culpable. Fueacroread.sh
en mi caso, redefine_filedir
.