(Ben demezdim düzeltme sağladı otomatik olarak düzeltilmesi etkinleştirerek zsh içinde bu sorun nedeniyle özellikle) setopt correctskinTenimde .zshrc.
Şimdi dtaebir terminal yazdığımda şunu alıyorum:
dtae
zsh: correct 'dtae' to 'date' [nyae]? y
Tue Mar 31 11:39:31 CEST 2015
Bu noktada zsh'ın kararımı hatırlamasını istiyorum. Bu yüzden bir dahaki sefere ben dtaeotomatik olarak date[1] 'e düzeltmelidir . Ancak, bu olmaz ve zsh yine ne yapacağımı soruyor:
dtae
zsh: correct 'dtae' to 'date' [nyae]?
[1] Tabii ki, eğer o zaman eğer gerçek bir dtaekomut veya diğer isim yoksa.
Güncelleştirme:
Zsh'nin "doğru" işlevselliğinin çağrılmasıyla otomatik olarak oluşturulan takma adları içeren özel bir dosya oluşturmak için zsh kaynak kodunu (dosya utils.c, işlev spckword) değiştirmeyi başardım :
orijinal:
if (x == 'y' || x == ' ' || x == '\t')
{
*s = dupstring(best);
if (hist)
hwrep(best);
}
değiştirilmiş:
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ıştırmanın ardından dtae, aşağıdaki satır dosyaya eklenir ~/.zsh_correct_aliases:
alias dtae='date'
Ancak, yeni değiştirilen ~/.zsh_correct_aliasesdosyayı yerinde nasıl kaynaklayacağımı bilmiyorum .
dtae, daha sonra / ne zaman dtaetanımlanmadıysa eski durumuna getirildi .
command_not_found_handler(çalışma zamanı yerine, ancak ayrıştırma zamanında) ve sonra mantığı zsh kodunda uygulayın.
dtaeUnutulan düzeltmenin ortaya çıkması veya geçici olarak devre dışı bırakılması durumunda kaldırılmasını mı istiyorsunuz ?