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
}
rmdir
nie”mkdir
lub „ for”touch
._longopt()
funkcji?readline
ustawień (masz~/inputrc
plik?) Oraz od faktu, że element jest prawdziwym katalogiem lub dowiązaniem symbolicznym do katalogu..inputrc
tego 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.Odpowiedzi:
To znany błąd. Zobacz to pytanie LP i te błędy 1 2 .
Ten komentarz wydaje się być poprawką. Jeśli nie możesz czekać, aż poprawka spłynie normalnymi kanałami, edytuj
/etc/bash_completion
wiersz 1587, zmieńdefault
nafilenames
(najpierw wykonaj kopię zapasową).źródło
/etc/bash_completion
linię 1587, zmieńdefault
nafilenames
.Ten sam problem miałem i rozwiązałem po zainstalowaniu programu Adobe Reader w systemie Ubuntu 12.04.
Skomentowałem
_filedir
blok/etc/bash_completion.d/acroread.sh
i znów zadziałało normalnie.źródło
_filedir
naprawił to, komentując blok (na górze). Musisz się wylogować lub uruchomić „exec bash” we wszystkich swoich powłokach, aby zobaczyć efekt, zobacz to pytanie .Miałem ten sam problem i naprawiłem go, usuwając katalog /etc/bash_completion.d/, a następnie ponownie instalując bash_completion. Wydaje mi się, że w tym katalogu znajdował się stary plik ... Mam nadzieję, że rozwiąże on również twój problem.
źródło
bash-completion
jeden z pozostałych plików/etc/bash_completion.d/
musi być winowajcą. Tak byłoacroread.sh
w moim przypadku - redefiniuje_filedir
.