Ich habe die Korrektur (ich würde sie wegen dieses Problems nicht als Autokorrektur bezeichnen ) in zsh aktiviert, indem setopt correct
ich sie in my aktiviere .zshrc
.
Wenn ich jetzt dtae
ein Terminal eintippe, erhalte ich:
dtae
zsh: correct 'dtae' to 'date' [nyae]? y
Tue Mar 31 11:39:31 CEST 2015
An dieser Stelle möchte ich, dass sich zsh an meine Entscheidung erinnert. Wenn ich das nächste Mal tippe dtae
, sollte es automatisch auf date
[1] korrigiert werden . Dies geschieht jedoch nicht, und zsh fragt mich erneut, was ich tun soll:
dtae
zsh: correct 'dtae' to 'date' [nyae]?
[1] Es sei denn natürlich, zu diesem Zeitpunkt existiert ein tatsächlicher dtae
Befehl oder Alias.
Aktualisieren:
Ich habe es geschafft, den zsh-Quellcode (Datei utils.c
, Funktion spckword
) so zu ändern , dass eine benutzerdefinierte Datei erstellt wird, die die Aliase enthält, die beim Aufrufen der "richtigen" Funktionalität von zsh automatisch erstellt werden:
Original:
if (x == 'y' || x == ' ' || x == '\t')
{
*s = dupstring(best);
if (hist)
hwrep(best);
}
geändert:
if (x == 'y' || x == ' ' || x == '\t')
{
char *aliaspath = getenv("HOME");
strcat(aliaspath, "/.zsh_correct_aliases");
FILE *out = fopen(aliaspath, "ab+");
fprintf(out, "alias %s=\'", *s);
*s = dupstring(best);
fprintf(out, "%s\'\n", *s);
fclose(out);
if (hist)
hwrep(best);
}
Bei der Ausführung dtae
wird die folgende Zeile zur Datei hinzugefügt ~/.zsh_correct_aliases
:
alias dtae='date'
Ich weiß jedoch nicht, wie ich die neu geänderte ~/.zsh_correct_aliases
Datei direkt importieren soll.
dtae
Wurde entfernt, bis vorhanden, dann wiederhergestellt, wenn dtae
nicht mehr definiert ist.
command_not_found_handler
aber zur Analysezeit statt zur Laufzeit) und dann die Logik in zsh-Code zu implementieren.
dtae
Spawns vorhanden sind oder nur vorübergehend deaktiviert werden?