Eu habilitei a correção (eu não chamaria de autocorreção especificamente por causa desse problema) no zsh ativando setopt correctno meu .zshrc.
Agora, quando digito dtaeum terminal, recebo:
dtae
zsh: correct 'dtae' to 'date' [nyae]? y
Tue Mar 31 11:39:31 CEST 2015
Neste ponto, eu gostaria que o zsh se lembrasse da minha decisão. Então, da próxima vez que eu digitar, dtaeele deve corrigir automaticamente para date[1]. No entanto, isso não acontece, e o zsh está novamente me perguntando o que fazer:
dtae
zsh: correct 'dtae' to 'date' [nyae]?
[1] A menos que, é claro, se nesse momento exista um dtaecomando ou apelido real .
Atualizar:
Eu consegui modificar o código-fonte zsh (arquivo utils.c, função spckword) para criar um arquivo personalizado contendo os aliases criados automaticamente com a invocação da funcionalidade "correta" do 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);
}
Na execução dtae, a seguinte linha é adicionada ao arquivo ~/.zsh_correct_aliases:
alias dtae='date'
No entanto, não sei como obter o ~/.zsh_correct_aliasesarquivo recém-modificado no local.
dtaeexistir, depois restabelecido se / quando dtaenão estiver mais definido.
command_not_found_handlermas em tempo de análise em vez de tempo de execução) e, em seguida, implementar a lógica no código zsh.
dtaesurgir ou apenas desativada temporariamente?