
Ist es möglich, Zsh dazu zu bringen, die Korrekturversuche von Argumenten, bei denen es sich nicht um Dateien handeln soll, durch Dateien aus dem aktuellen Verzeichnis zu unterlassen, ohne die Korrektur vollständig auszuschalten oder sie darauf zu beschränken setopt CORRECT
(nur den Befehl zu korrigieren)?
Wenn beispielsweise CORRECT_ALL
mit gesetzt ist setopt
, geschieht Folgendes:
gris@arefiev: ~% cd srcc
change srcc to src-nyae? n
Soweit, gut (das Argument für cd
sollte eine Datei sein). Allerdings
gris@arefiev: ~% man zile
change zile to .zile-nyae?
Was? Ich würde erwarten, dass es korrigiert wird, zile
wenn .zile
es man
mit Option aufgerufen wird -C
. Es versucht auch, Hostparameter von ssh
, erste Argumente von sudo
usw. zu korrigieren, was wirklich nervig ist.
Ich muss auf eine Krücke zurückgreifen: set alias man='nocorrect man'
usw. usw. für jeden betroffenen Befehl, aber das ist eindeutig nicht die beste Lösung. Ich mag CORRECT
die Krücke plus auch nicht und würde CORRECT_ALL
sie einfach vorziehen CORRECT
.
Zsh ist zsh 4.3.17 (x86_64-unknown-linux-gnu)
eine Debian-Seite.
Aktualisieren: Hier ist mein.zshrc
http://pastebin.com/67mykgRv
Antwort1
Zsh verfügt über eine große Anzahl von Vervollständigungen, aber eine kleinere Anzahl von Korrekturen. Es gibt viele Befehle, bei denen die Vervollständigung nützlich ist, aber keine Korrektur. Beispielsweise ist es nützlich, Argumente zu vervollständigen mkdir
(um Verzeichnisse innerhalb vorhandener Verzeichnisse zu erstellen), aber nicht, sie zu korrigieren. Die correct_all
Option ist sehr streng, da sie die Korrektur überall einschaltet. Leider gibt es keine Option zur Korrektur nur, wenn ein Satz korrekter Eingaben bereitgestellt wird.
Sie können die Korrekturen für einen bestimmten Befehl anpassen, indem Sie diecorrections
Tag, und passen Sie an, ob eine Korrektur durchgeführt werden soll, indem Sie_correct
Teil dermatcher-list
oder nicht. Diese werden mit demzstyle
eingebaut.
Antwort2
Für mich klingt es so, als ob in Ihrer Distribution etwas fehlt. Die meisten ZSH-Implementierungen verfügen über eine große Sammlung vorkonfigurierter Vervollständigungseinstellungen für ZSH, die basierend auf der Befehls- und Argumentposition intelligent vervollständigt werden. Auf meinem System gibt es beispielsweise einezsh-VervollständigungenPaket. Wenn es installiert und richtig geladen ist, man
wird es nur mit Dingen vervollständigt, die in den Manpages zu finden sind, nicht mit Dateien, ssh
sondern nur mit Hostnamen. ssh -l
Es würde mit Systembenutzernamen vervollständigt, ssh -l caleb
würde danach aber wieder zur Vervollständigung mit Hostnamen usw. zurückkehren.
Sie sollten prüfen, welche zsh-Pakete verfügbar sind und ob Sie die Standardkonfigurationen richtig laden. Sie sollten nicht eine Reihe manueller Überschreibungen für Standardbefehle einrichten müssen, wie Sie sie in Ihrer Frage auflisten.