He habilitado la corrección (no lo llamaría autocorrección específicamente debido a este problema) en zsh habilitando setopt correcten mi .zshrc.
Ahora, cuando escribo dtaeen una terminal, obtengo:
dtae
zsh: correct 'dtae' to 'date' [nyae]? y
Tue Mar 31 11:39:31 CEST 2015
En este punto, me gustaría que zsh recuerde mi decisión. Entonces, la próxima vez que escriba dtae, debería corregirse automáticamente a date[1]. Sin embargo, esto no sucede, y zsh nuevamente me pregunta qué hacer:
dtae
zsh: correct 'dtae' to 'date' [nyae]?
[1] A menos, por supuesto, si en ese momento existe un dtaecomando o alias real .
Actualizar:
He logrado modificar el código fuente de zsh (archivo utils.c, función spckword) para crear un archivo personalizado que contiene los alias creados automáticamente con la invocación de la funcionalidad "correcta" de zsh:
original:
if (x == 'y' || x == ' ' || x == '\t')
{
*s = dupstring(best);
if (hist)
hwrep(best);
}
modificado:
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);
}
Al ejecutar dtae, la siguiente línea se agrega al archivo ~/.zsh_correct_aliases:
alias dtae='date'
Sin embargo, no sé cómo obtener el ~/.zsh_correct_aliasesarchivo recién modificado en el lugar.

dtaegenera o simplemente deshabilitarla temporalmente?dtaeexista, luego restablecido si / cuandodtaeya no está definido.command_not_found_handlerpero en tiempo de análisis en lugar de tiempo de ejecución), y luego implementar la lógica en el código zsh.Respuestas:
Puede basar su código en el alias incorporado definido aquí
(no probado)
Y agregue
source ~/.zsh_correct_aliasesa usted .zshrcEDITAR : probado con fuente:
Da:
fuente
Podría definir una función precmd que genere ~ / .zsh_correct_aliases.
fuente