
Wenn ich die Standard-Tabulatorvervollständigung in Bash oder Zsh verwende, gebe ich den ersten Teil eines Dateinamens oder Pfads ein und drücke dann, um das Wort zu vervollständigen. Das funktioniert gut, es sei denn, ich befinde mich in einem Verzeichnis voller Dateien, in dem alle Variationen der Dateinamen am Ende des Wortes stehen, z. B. ein Verzeichnis voller zeitgestempelter Dateien, die alle mit demselben Präfix beginnen:
foo-20120701124501.log
foo-20120701124531.log
foo-20120701124601.log
foo-20120701124631.log
foo-20120701124701.log
foo-20120701124731.log
Wenn ich in diesem Fall tippe, foo<tab>
erhalte ich Folgendes foo-20120701124
: Ich kann erneut die Tabulatortaste drücken und alle Dateien sehen … Ich müsste die nächsten drei Zeichen eingeben, um einen eindeutigen Dateinamen zu erhalten.
Ich frage mich, ob es eine Möglichkeit gibt, beispielsweise „instance“ einzugeben 4731.log
und dann den Wortanfang zu vervollständigen. Ich vermute, dass dies in Bash schwierig wäre, da die Bash-Vervollständigung für ihre programmierbare Vervollständigung „ $COMP_CWORD
and“ verwendet $COMP_KEY
, und so wie ich es lese, glaube ich nicht, dass diese eine Wortvervollständigung nach links ermöglichen würden. Ich weiß nicht genug über die Vervollständigung in Zsh, um zu wissen, wo ich in den Manpages mit der Suche beginnen soll.
Antwort1
Dies funktioniert nur, wenn vor dem Drücken der Tabulatortaste ein Befehl steht. Wahrscheinlich ist das nicht das, wonach Sie suchen, aber nur so konnte ich die gewünschten Ergebnisse erzielen. Das folgende Beispiel sollte in Ihrem Fall funktionieren. Sie müssen nur am Ende von *4731.log sein und 1 Mal die Tabulatortaste drücken. Wenn es eindeutig ist, wird es automatisch vervollständigt.
ls *4731.log