Автозаполнение Bash с добавлением пробелов - почему и как исправить?

Я использую табуляцию больше, чем набираю буквы. Раньше я набирал rm ~/De<TAB>, и это было бы завершено до rm ~/Desktop/, чтобы я мог перейти на следующий уровень.

В последнее время это поведение изменилось. Завершение теперь приводит к rm ~/Desktop<SPACE>, что означает, что я должен вернуться назад и набрать косую черту, если я хочу продолжить. Это заставляет меня плакать.

Кажется, что изменения находятся в функции _longopt() в /etc/bash_completion, однако, насколько я могу судить. Является ли это изменение преднамеренным, и если да, то для чего оно нужно? Можно ли вернуть старое поведение, желательно с помощью параметра конфигурации, а не просто скопировать старый код из какой-либо другой системы?

Редактировать: Функция для справки.

_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
}
29
задан 2 March 2013 в 21:11

3 ответа

У меня была и решена та же проблема после установки Adobe Reader в Ubuntu 12.04.

Я прокомментировал блок _filedir в /etc/bash_completion.d/acroread.sh, и он снова работал нормально.

0
ответ дан 2 March 2013 в 21:11

У меня была та же проблема, и я исправил ее, удалив каталог /etc/bash_completion.d/, а затем переустановил bash_completion. Я предполагаю, что старый файл был в этом каталоге ... Надеюсь, он решит и вашу проблему.

0
ответ дан 2 March 2013 в 21:11

Это известная ошибка. См. этот LP вопрос и эти ошибки 1 2 .

Этот комментарий , кажется, исправить. Если вы не можете дождаться исправления, чтобы проскользнуть по обычным каналам, отредактируйте строку /etc/bash_completion 1587, измените default на filenames (сначала сделайте резервную копию).

0
ответ дан 2 March 2013 в 21:11

Другие вопросы по тегам:

Похожие вопросы: