30 votos

Bash el completado automático con espacios añadidos – ¿por qué y cómo solucionar?

Yo uso la finalización de pestaña más que escribir cartas. Yo solía tipo rm ~/De<TAB> y sería completado a rm ~/Desktop/ , para que pudiera continuar en el siguiente nivel.

Recientemente, ese comportamiento ha cambiado. La finalización ahora rendimientos rm ~/Desktop<SPACE>, lo que significa que debe de retroceso y el tipo de la barra si quiero seguir. Esto me hace llorar.

Los cambios parecen estar ubicado en la función _longopt() en /etc/bash_completion, sin embargo, que es lo más lejos que puedo seguir. Es este cambio intencional, y si es así, ¿qué es bueno? Puedo tener el comportamiento anterior de la espalda, de preferencia por una opción de configuración, en lugar de copiar el código antiguo de algún otro sistema?

Edit: 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
}

9voto

hiteshradia Puntos 91

Tenía y resuelto, el mismo problema después de instalar Adobe Reader en Ubuntu 12.04.

Comenté a la _filedir bloque de /etc/bash_completion.d/acroread.sh y funcionó normalmente otra vez.

4voto

Robert Christie Puntos 7323

Este es un error conocido. Ver este LP pregunta y estos errores 1 2.

Este comentario parece ser la solución. Si usted no puede esperar para una revisión para escurre por los canales normales, editar /etc/bash_completion de la línea de 1587, en cambio default a filenames (hacer una copia de seguridad primero).

2voto

PatrickM Puntos 21

Tuve el mismo problema y fijo quitando /etc/bash_completion.d/ directorio, luego reinstale bash_completion. Supongo que fue un antiguo archivo en este directorio... Esperemos que va a resolver su problema también.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: