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
}
rmdir
, nicht fürmkdir
odertouch
._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.Antworten:
Dies ist ein bekannter Fehler. Siehe diese LP-Frage und diese Bugs 1 2 .
Dieser Kommentar scheint die Lösung zu sein. Wenn Sie nicht darauf warten können, dass ein Update die normalen Kanäle herunterläuft, bearbeiten Sie die
/etc/bash_completion
Zeile 1587 und ändern Sie siedefault
infilenames
(erstellen Sie zuerst ein Backup).quelle
/etc/bash_completion
Linie 1587, Änderungdefault
zufilenames
.Ich hatte und löste das gleiche Problem nach der Installation von Adobe Reader unter Ubuntu 12.04.
Ich habe den
_filedir
Block in auskommentiert/etc/bash_completion.d/acroread.sh
und es hat wieder normal funktioniert.quelle
_filedir
Blocks (rechts oben) hat es behoben. Sie müssen sich abmelden oder "exec bash" in allen Ihren Shells ausführen, um den Effekt zu sehen . Siehe diese Frage .Ich hatte das gleiche Problem und habe es behoben, indem ich das Verzeichnis /etc/bash_completion.d/ entfernt und dann bash_completion neu installiert habe. Ich denke, eine alte Datei war in diesem Verzeichnis ... Hoffentlich wird es auch Ihr Problem lösen.
quelle
bash-completion
muss eine der verbleibenden Dateien/etc/bash_completion.d/
der Schuldige sein. Es waracroread.sh
in meinem Fall - es definiert neu_filedir
.