Ho abilitato la correzione (non la chiamerei correzione automatica specificamente a causa di questo problema) in zsh abilitando setopt correct
nel mio .zshrc
.
Ora, quando scrivo dtae
un terminale, ottengo:
dtae
zsh: correct 'dtae' to 'date' [nyae]? y
Tue Mar 31 11:39:31 CEST 2015
A questo punto vorrei che zsh ricordasse la mia decisione. Quindi la prossima volta che scrivo dtae
dovrebbe automaticamente correggere su date
[1]. Tuttavia, ciò non accade e zsh mi chiede di nuovo cosa fare:
dtae
zsh: correct 'dtae' to 'date' [nyae]?
[1] A meno che, ovviamente, se in quel momento esista un dtae
comando o un alias reale .
Aggiornare:
Sono riuscito a modificare il codice sorgente zsh (file utils.c
, funzione spckword
) per creare un file personalizzato contenente gli alias creati automaticamente con l'invocazione della funzionalità "corretta" di zsh:
originale:
if (x == 'y' || x == ' ' || x == '\t')
{
*s = dupstring(best);
if (hist)
hwrep(best);
}
modificata:
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 momento dell'esecuzione dtae
, la seguente riga viene aggiunta al file ~/.zsh_correct_aliases
:
alias dtae='date'
Tuttavia, non so come ottenere il ~/.zsh_correct_aliases
file appena modificato sul posto.
dtae
esiste, quindi ripristinato se / quando dtae
non è più definito.
command_not_found_handler
ma al momento dell'analisi invece del runtime), e quindi implementare la logica nel codice zsh.
dtae
generata o semplicemente disabilitata temporaneamente?