Standardmäßig versucht die Abschluss-Engine von zsh nur, etwas an Ihre Eingabe anzuhängen. Sie haben es so konfiguriert, dass auch versucht wird, ein Präfix hinzuzufügen. Die einfache Interactive Completion Configuration Engine ( compinstall
) bietet dies unter „Matching Control → Teilstring Completion“ an. Dies fügt eine Zeile wie diese in Ihre ein .zshrc
:
zstyle ':completion:*' matcher-list '' 'l:|=* r:|=*'
Die zstyle
eingebauten Einstellungen (meistens) für die Fertigstellung. Der matcher-list
Abschlussstil ist eine Liste von Möglichkeiten, nacheinander zu versuchen, anzuhalten, wenn mindestens eine Übereinstimmung vorliegt. Die leere Zeichenfolge bedeutet die Standardvervollständigung (nur Suffixe). Die Beschwörung der Übereinstimmungssteuerungl:|=* r:|=*
bedeutet, eine Präfixübereinstimmung *
und eine Suffixübereinstimmung zu versuchen *
, dh ein beliebiges Präfix und Suffix.
Sie können Präfixe verbieten, die _
insgesamt beginnen . Dies ermöglicht weiterhin die Vervollständigung von Wörtern, die mit beginnen _
, und die Vervollständigung durch Hinzufügen eines Präfixes, aber das Präfix beginnt möglicherweise nicht mit _
.
zstyle ':completion:*' matcher-list '' 'l:|=[^_]* r:|=*'
Dies gilt für alle Vervollständigungen, nicht nur für Vervollständigungen von Befehlsnamen. Ich weiß nicht, wie ich das auf Befehlsnamen beschränken soll.
Es sollte eine Möglichkeit geben, Befehlsnamen, die mit beginnen _
, genauer auszuschließen , aber ich weiß nicht wie. Ein erster Start ist mit dem ignored-patterns
Abschlussstil.
zstyle ':completion:*:*:-command-:*:*' ignored-patterns '_*'
Dies schließt Übereinstimmungen aus, die mit beginnen _
. Wenn jedoch keine Übereinstimmungen vorhanden sind, versucht zsh es erneut ohne die Ignorierregeln. Das Gute daran ist, dass der Befehl, wenn er zuerst mit einem Unterstrich gestartet wurde, in diesem zweiten Durchgang abgeschlossen wird. Das Schlimme ist , dass zsh also versuchen , einen Unterstrich trotzdem hinzufügen , wenn es keine Übereinstimmungen gibt, also , wenn Sie vi
und , view
aber nicht vim
drücken Sie dann Tabnach vi
bieten vi
und view
doch nicht _vim
, aber wenn Sie geben vim
dann Abschluss bieten _vim
.