मैंने अपने में सक्षम करके 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
अस्तित्व में आ जाए या अस्थायी रूप से अक्षम हो जाए?