Я использую вкладку больше, чем печатать буквы. Я использовал для ввода 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
}
У меня была и решена такая же проблема после установки Adobe Reader на Ubuntu 12.04.
Я прокомментировал блок _filedir в /etc/bash_completion.d/acroread.sh, и он снова работал нормально.
У меня была такая же проблема, и я исправил ее, удалив каталог /etc/bash_completion.d/, а затем переустановил bash_completion. Я думаю, старый файл был в этом каталоге ... Надеюсь, он также решит вашу проблему.