Używam uzupełniania tabulacji bardziej niż pisania liter. Kiedyś pisałem rm ~/De<TAB>i było to gotowe, aby rm ~/Desktop/móc kontynuować na wyższym poziomie.
Ostatnio to zachowanie się zmieniło. Ukończenie daje teraz wynik rm ~/Desktop<SPACE>, co oznacza, że muszę cofnąć i wpisać ukośnik, jeśli chcę kontynuować. To sprawia, że płaczę.
Wydaje się, że zmiany są zlokalizowane w funkcji _longopt()w /etc/bash_completion, ale o ile mogę to zrobić. Czy ta zmiana jest zamierzona, a jeśli tak, to po co jest dobra? Czy mogę odzyskać stare zachowanie, najlepiej za pomocą opcji config zamiast kopiowania starego kodu z innego systemu?
Edycja: funkcja w celach informacyjnych.
_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()funkcji?
readlineustawień (masz ~/inputrcplik?) Oraz od faktu, że element jest prawdziwym katalogiem lub dowiązaniem symbolicznym do katalogu.
.inputrctego systemu. (To były dni, ustalanie klawiszy Backspace i kursorów…) I dzieje się tak w przypadku wszystkich elementów, katalogu lub pliku, dowiązania symbolicznego lub nie.
rmdirnie”mkdirlub „ for”touch.