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 zstyleeingebauten Einstellungen (meistens) für die Fertigstellung. Der matcher-listAbschlussstil 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-patternsAbschlussstil.
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 viund , viewaber nicht vimdrücken Sie dann Tabnach vibieten viund viewdoch nicht _vim, aber wenn Sie geben vimdann Abschluss bieten _vim.