2010-08-09 4 views
68

Ich habe gerade angefangen mit Zsh in letzter Zeit für einige der integrierten Unterstützung in der Shell-Prompt für meine Git-Status usw.Zsh will einen Befehl an Autocorrect, ein mit _ bevor es

Wenn ich eintippen:

ruby -v 

die Version von ruby ​​zu bestätigen ich laufe, fragt Zsh wenn ich den Befehl _ruby ändern möchten. Nun, nachdem ich an der Eingabeaufforderung Nein gesagt habe und der Befehl wie erwartet abgeschlossen wurde, bekomme ich die Frage an der Eingabeaufforderung, nachdem ich bestätigt habe, dass mein Befehl korrekt ist.

Ich gehe davon gibt es eine Abschluss-Datei oder etwas dergleichen.

Dank

Update:

Die Schale ist nicht mehr zu voll _ruby versucht, hielt es nach dem Schließen der Schale ein paar Mal einige, wie zu reagieren.

Ich habe versucht, die Datei nach oben mehrmals zu reinigen, aber es gibt einen „setzt“ Variable, die 50 oder mehr Zeilen lang ist und die Linien sind alle zusammen liefen, einige Zeilen mehr als 150 Zeichen. Vielleicht könnte ich dir einen Anhang per E-Mail schicken, wenn du ihn immer noch sehen willst. Ich entschuldige mich aufrichtig für die unordentliche Post.

+0

Ich sehe nicht, dass das Verhalten. Welche Version von zsh? Was ist in deinem '~/.zshrc'? Tut es das, wenn Sie versuchen, ein einfaches Ruby-CLI-Skript auszuführen (z. B. "ruby -e 'print" hi \ n "")? Poste deine Datei '/ usr/share/zsh/functions/Completion/Unix/_ruby' und wir können sie gegen eine bekanntermaßen gute Version prüfen. –

+0

Was ist mit den anderen Fragen, die ich gestellt habe? Ich verstehe nicht - hast du immer noch das Problem? Wenn Sie möchten, dass sich jemand sicher ist und Ihre Follow-ups sieht, adressieren Sie einen Kommentar an @username, der etwas wie "siehe die bearbeitete Frage" sagt, wenn die Information selbst zu lang ist, um in den Kommentar zu passen. Dadurch wird das Benachrichtigungssymbol des Benutzers (der kleine Umschlag am oberen Rand der Seite) angezeigt. –

+0

@Dennis Williamson Es stellt sich heraus, die Antwort von Gilles ist richtig. Ich glaube, es korrigierte sich nach dem Neustart der Shell oder Abmeldung. Ich war mir nicht sicher, ob ich mich abmelden würde oder nicht. "Ich verstehe nicht - haben Sie immer noch das Problem?" Wie ich in der Post gesagt habe, würde der Ruby-Befehl ausgeführt werden, nachdem ich mich entschieden habe, dass zsh ihn in _ruby ändern soll. Also ja, alles funktioniert. Vielen Dank für Ihre Nachricht. –

Antwort

108

Dies ist Befehl Autokorrektur, durch die Option correct aktiviert. Es hat nichts mit der Fertigstellung zu tun. Sie sehen _ruby, weil zsh denkt, dass es keinen ruby Befehl gibt und _ruby als den nächsten vorhandenen Treffer anbietet.

Wenn Sie gerade ruby installiert haben, ist es möglich, dass zsh die Liste der verfügbaren Befehle früher gespeichert hat, und es wird nicht immer versucht zu sehen, ob der Befehl dazwischen aufgetreten ist. Führen Sie in diesem Fall hash -rf aus. Zukünftige zsh-Sitzungen haben dieses Problem nicht, da der Befehl ruby bereits beim Start vorhanden war.

Manchmal, wenn Sie Ihre PATH ändern, zsh vergisst einige Befehle gehasht. Die Option hash_listall hilft dagegen. Wie oben, wenn Sie zsh zwingen können, seinen Befehlscache mit hash -rf zu aktualisieren.

+0

das ist definitiv was los ist. Es scheint, dass es sich nach ein bisschen korrigiert hat. Möglicherweise hat es die Shell neu gestartet oder sich ausgeloggt. Ich kann mich nicht erinnern, ob ich mich ausgeloggt habe, also möchte ich nicht sagen, dass es korrigiert wurde, nur indem ich die Shell neu starte. Das einzige, was mich verwirrt, ist, wie der Befehl erfolgreich ausgeführt wird, wenn er sich entscheidet, ihn von zsh ändern zu lassen. Ich nehme an, dass es etwas damit zu tun hatte, dass die Shell nicht wusste, dass der Ruby-Befehl zu der Zeit verfügbar war. Danke für die Antwort –

+0

Nebenbei verwende ich zsh 4.3.12 (i386-apple-darwin11.0.0) und 'hash_listall' wird nicht gefunden. Aber 'hash -rf' löste mein Problem mit zsh, das ständig etwas autokorrigieren wollte, das ich kürzlich installiert habe. – recursive

+8

Ich habe dieses Problem mit meinem Git-Alias ​​'git lg' welches zsh glaubt, dass' git log' sein sollte. Es gibt einen Grund, warum ich es 'lg' nenne und das liegt daran, dass es ähnlich wie" log "ist, weil seine Funktion ähnlich ist! Wie behebe ich dieses Problem? Ich möchte wirklich nicht die Gewohnheit entwickeln, doppelt einzutreten. –

14

Ich finde die Autokorrektur-Funktion kann manchmal ärgerlich. Also muss ich in meiner ~/.zshrc,

DISABLE_CORRECTION="true" 
+1

Besser noch, erstellen Sie Aliase, um die Autokorrektur ein- und auszuschalten, weil * die meisten * der Zeit, die Sie wollen, besonders wenn Sie viele Plugins verwenden. –

18

Sie einen Aliasnamen machen könnte:

alias ruby='nocorrect ruby'

Es ist, was ich tat, als zsh fragen mich immer, wenn ich .meteor meinte, als ich meteor getippt, weil Die automatische Korrektur ist von Zeit zu Zeit noch nützlich.

+1

Finden Sie leicht das nützlichste – netpoetica

+1

Dies sollte die Antwort sein, vielen Dank – Drew

1

Vor einiger Zeit nach einem Update, bekam ich Befehl Auto-Korrektur aktiviert, das will ich nicht. Wenn dir das gleiche passiert ist und du es rückgängig machen willst, in der ~ /.zshrc Datei werden Sie es machen:
# Uncomment the following line to enable command auto-correction.
ENABLE_CORRECTION="false"

oder kommentieren Sie per Gebrüll:
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"

Verwandte Themen