Я використовую заповнення вкладки більше, ніж набираючи літери. Я раніше набирав, rm ~/De<TAB>
і це було б завершено, щоб rm ~/Desktop/
я міг продовжувати наступний рівень.
Останнім часом така поведінка змінилася. Тепер завершення приносить результат rm ~/Desktop<SPACE>
, а це означає, що я повинен повернути простір і ввести косу рису, якщо хочу продовжувати. Це змушує мене плакати.
Зміни, здається, знаходяться у функції _longopt()
в /etc/bash_completion
, однак, наскільки я можу дотримуватися. Чи є ця зміна навмисною, і якщо так, то для чого це добре? Чи можу я повернути стару поведінку, бажано за допомогою параметра config, а не просто копіювати старий код з якоїсь іншої системи?
Редагувати: функція для довідок.
_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
}
_longopt()
функції?
readline
налаштувань (у вас є ~/inputrc
файл?) Та від того, що цей елемент є справжнім каталогом або символьним посиланням на каталог.
.inputrc
цієї системи. (Це були дні, виправлення зворотної області та клавіш курсору…) І це відбувається з усіма елементами, каталогами чи файлами, символьними посиланнями чи ні.
rmdir
, а не дляmkdir
чиtouch
.