(Ben demezdim düzeltme sağladı otomatik olarak düzeltilmesi etkinleştirerek zsh içinde bu sorun nedeniyle özellikle) setopt correct
skinTenimde .zshrc
.
Şimdi dtae
bir 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 dtae
otomatik 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 dtae
komut 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_aliases
dosyayı yerinde nasıl kaynaklayacağımı bilmiyorum .
dtae
, daha sonra / ne zaman dtae
tanı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.
dtae
Unutulan düzeltmenin ortaya çıkması veya geçici olarak devre dışı bırakılması durumunda kaldırılmasını mı istiyorsunuz ?