J'ai activé la correction (je n'appellerais pas cela la correction automatique en raison de ce problème) dans zsh en activant setopt correctdans mon .zshrc.
Maintenant, quand je tape dtaedans un terminal, j'obtiens:
dtae
zsh: correct 'dtae' to 'date' [nyae]? y
Tue Mar 31 11:39:31 CEST 2015
À ce stade, je voudrais que zsh se souvienne de ma décision. Donc, la prochaine fois que je tape, dtaeil devrait automatiquement se corriger en date[1]. Cependant, cela ne se produit pas, et zsh me demande à nouveau quoi faire:
dtae
zsh: correct 'dtae' to 'date' [nyae]?
[1] Sauf, bien sûr, s'il existe à ce moment-là une dtaecommande ou un alias réel .
Mise à jour:
J'ai réussi à modifier le code source zsh (fichier utils.c, fonction spckword) pour créer un fichier personnalisé contenant les alias créés automatiquement avec l'invocation de la fonctionnalité "correcte" de zsh:
original:
if (x == 'y' || x == ' ' || x == '\t')
{
*s = dupstring(best);
if (hist)
hwrep(best);
}
modifié:
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);
}
Lors de l'exécution dtae, la ligne suivante est ajoutée au fichier ~/.zsh_correct_aliases:
alias dtae='date'
Cependant, je ne sais pas comment trouver le ~/.zsh_correct_aliasesfichier nouvellement modifié sur place.
dtaeexiste, puis rétabli si / quand dtaen'est plus défini.
command_not_found_handlermais au moment de l'analyse au lieu de l'exécution), puis d'implémenter la logique dans le code zsh.
dtaeapparition ou simplement désactivée temporairement?