Ich benutze die Tabulatorvervollständigung mehr als die Eingabe von Buchstaben. Früher habe ich getippt rm ~/De<TAB>
und es wurde so ergänzt, rm ~/Desktop/
dass ich mit dem nächsten Level weitermachen konnte.
Vor kurzem hat sich dieses Verhalten geändert. Die Vervollständigung ergibt nun rm ~/Desktop<SPACE>
, was bedeutet, dass ich die Rücktaste drücken und den Schrägstrich eingeben muss, um fortzufahren. Das bringt mich zum Weinen.
Die Änderungen scheinen in der Funktion _longopt()
zu liegen /etc/bash_completion
, aber das ist soweit ich folgen kann. Ist diese Änderung beabsichtigt und wenn ja, wofür ist sie gut? Kann ich das alte Verhalten wiederherstellen, vorzugsweise durch eine Konfigurationsoption, anstatt nur den alten Code von einem anderen System zu kopieren?
Bearbeiten: Die Referenzfunktion.
_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()
Funktion posten ?
readline
Einstellungen (haben Sie eine ~/inputrc
Datei?) Und der Tatsache abhängen , dass es sich bei dem Objekt um ein echtes Verzeichnis oder einen Symlink zu einem Verzeichnis handelt.
.inputrc
auf diesem System mehr. (Das waren die Tage, als man die Rücktaste und die Cursortasten festlegte…) Und das passiert für alle Elemente, Verzeichnis oder Datei, Symlink oder nicht.
rmdir
, nicht fürmkdir
odertouch
.