Ich verwende zsh mit grmls zshrc als Basis. Im Rahmen meiner Arbeit greife ich regelmäßig auf Netzwerkpfade zu (z. B. NFS, AFS).
Wenn ich /a/long/network/path/on/the/other/side/of/the/world schreibe und zweimal die TAB-Taste drücke, ist es quälend langsam, da zsh mit der Suche unter /a/ und dann unter /a/long /a/long/network usw. beginnt.
Gleichzeitig führt die Ausführung von ls /a/long/network/path/on/the/other/side/of/the/world in einer Sekunde zu einer Rückgabe. Daher möchte ich zsh sagen, dass es aufhören soll, mich zu hinterfragen. (Wenn ich /usr/src/linuxx/ schreibe und dann die Tabulatortaste drücke, findet es heraus, dass ich /usr/src/linux/ wollte, und das ist in Ordnung, schadet mir aber wegen des Netzwerks mehr, als es mir nützt.) Ich möchte nur „am Ende“ nach dem letzten Schrägstrich automatisch vervollständigen.
Manchmal verwende ich eine Problemumgehung, indem ich mit der CD in das Verzeichnis gehe und dann die automatische Vervollständigung verwende. Es muss doch sicher einen besseren Weg geben.
Wie kann ich das erreichen?
Antwort1
Dieses Verhalten wird konfiguriert durchStile(außer ein paar grundlegenden Dingen, die Optionen haben). Sie solltenpath-completion
.
Standardmäßig prüft die Dateinamenvervollständigung alle Komponenten eines Pfads, um zu sehen, ob es Vervollständigungen dieser Komponente gibt. Beispielsweise
/u/b/z
kann vervollständigt werden zu/usr/bin/zsh
. Wenn Sie diesen Stil explizit auf false setzen, wird dieses Verhalten für Pfadkomponenten bis/
vor dem Cursor unterdrückt.
zstyle ':completion:*' path-completion false
Vielleicht möchten Sie einschaltenaccept-exact-dirs
stattdessen. Wenn path-completion
„Left on“ und „ accept-exact-dirs
On“ aktiviert sind, versucht zsh nur dann die Vervollständigung für andere Pfadkomponenten als die letzte, wenn der Pfad nicht existiert.
zstyle ':completion:*' accept-exact-dirs true