मैंने अपने में सक्षम करके zsh में सुधार (मैं इसे विशेष रूप से इस मुद्दे के कारण स्वतः पूर्णता नहीं कहूंगा) को सक्षम setopt correctकिया है .zshrc।
अब, जब मैं dtaeएक टर्मिनल में टाइप करता हूं, मुझे मिलता है:
dtae
zsh: correct 'dtae' to 'date' [nyae]? y
Tue Mar 31 11:39:31 CEST 2015
इस समय मैं अपने निर्णय को याद रखना चाहूंगा। इसलिए अगली बार जब मैं टाइप करूं तो dtaeयह अपने आप सही हो जाना चाहिए date[1]। हालाँकि, ऐसा नहीं होता है, और zsh फिर से मुझसे पूछ रहा है कि मुझे क्या करना है:
dtae
zsh: correct 'dtae' to 'date' [nyae]?
[१] जब तक कि निश्चित रूप से, उस समय कोई वास्तविक dtaeआदेश या उपनाम मौजूद न हो ।
अद्यतन करें:
मैं zsh के "सही" कार्यक्षमता के आह्वान के साथ स्वचालित रूप से बनाई गई उपनाम युक्त एक कस्टम फ़ाइल बनाने के लिए zsh स्रोत कोड (फ़ाइल utils.c, फ़ंक्शन spckword) को संशोधित करने में कामयाब रहा हूं :
मूल:
if (x == 'y' || x == ' ' || x == '\t')
{
*s = dupstring(best);
if (hist)
hwrep(best);
}
संशोधित:
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);
}
निष्पादित करने पर dtae, फ़ाइल में निम्न पंक्ति जोड़ी जाती है ~/.zsh_correct_aliases:
alias dtae='date'
हालाँकि, मैं नहीं जानता कि कैसे नई संशोधित ~/.zsh_correct_aliasesफ़ाइल को इन-प्लेस किया जा सकता है।
dtaeमौजूद नहीं है, तब हटा दिया जाता है, अगर / जब dtaeअब परिभाषित नहीं है।
command_not_found_handlerकि रनटाइम के बजाय पार्सिंग समय पर), और फिर zsh कोड में तर्क को लागू करें।
dtaeअस्तित्व में आ जाए या अस्थायी रूप से अक्षम हो जाए?