私は(私はそれを呼び出すことはありません補正を有効にした自動補正可能にすることにより、zshの中でこの問題が原因で特異的に)setopt correct
私の中で.zshrc
。
さて、dtae
ターミナルを入力すると、次のようになります:
dtae
zsh: correct 'dtae' to 'date' [nyae]? y
Tue Mar 31 11:39:31 CEST 2015
この時点で、zshに私の決定を記憶してもらいたいと思います。そのため、次に入力するときにdtae
自動的にdate
[1]に修正されるはずです。ただし、これは発生せず、zshは再度何をすべきかを尋ねています。
dtae
zsh: correct 'dtae' to 'date' [nyae]?
[1]もちろん、その時点で実際のdtae
コマンドまたはエイリアスが存在する場合を除きます。
更新:
私は、zshの「正しい」機能の呼び出しで自動的に作成されたエイリアスを含むカスタムファイルを作成するために、zshソースコード(file utils.c
、function 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
ファイルをその場で入手する方法がわかりません。
@StéphaneChazelas1)単一のファイルに保存するのが最適です。2)プラスになりますが、厳密には必要ありません。3)
—
shrx
dtae
存在するまで削除され、その後、dtae
定義されていない場合は復元されます。
専用のzshフック関数を呼び出して(
—
ステファンシャゼル
command_not_found_handler
実行時ではなく解析時のように)、zshコードでロジックを実装する方がおそらく理にかなっています。
これは良い習慣だとは思わない...正しくタイプする方法を学ぶ方がはるかに効率的だと思う。
—
ペシュケ
少なくともこの特定の用途については、コードにエイリアスを.zshrcの最後に追加させるのではなく、どうにかして.zsh_correct_aliasesを.zshrcに追加するのではないのか、私は興味があります。セキュリティのため、必要に応じて、いくつかのハッシュと、曖昧/変数、またはより良いことObscursing
—
atchmiオラフ
dtae
スポーンが存在するか、一時的に無効になったときに、記憶された修正を削除しますか?