web-dev-qa-db-ja.com

zshの `mv`コマンドを使用するときにスペルの修正を回避する(できれば応急修理しない)方法はありますか?

私はzshが大好きで、そのスペル修正が役立つと思いますが、明らかに修正してはならないことを修正するのは面倒です。たとえば、私はちょうど実行しました

mv iso_ iso

そしてそれは答えた

zsh: correct 'iso' to 'iso_' [nyae]?

考えてみてください。 'iso'を 'iso_'に修正すると、実行しようとしていたことを意味します

mv iso_ iso_

これは決して意味がありません。したがって、これは実際にはzshの設計上の欠陥であり、全面的に修正する必要があります。しかし、(少なくとも私が使用しているバージョンでは)そうではなく、そうなる可能性が低いことを考えると、それを修正するための設定はありますか?私はそれを修正するための手ごわい方法を好むでしょう。たとえば、mvのエイリアスはごちゃごちゃしています。

4
iconoclast

_correct_all_オプションが気に入らない場合は、使用しないでください。

FWIW、デフォルトでは設定されていません。ネット上には人気のある構成があり(どちらかは言いません)、何らかの理由でそのオプションをすべての人に設定するのは楽しいアイデアだと考えています...それでも、多くのアプリケーションには意味がありません。 everyコマンドライン引数がファイル名のスペル修正の対象になります...それは非常識です。

長い話を短くするには:_setopt correct_と[〜#〜] not [〜#〜] _setopt correctall_のみ。

ファイル名のスペルについてサポートが必要な場合は、zshの補完システムが__approximate_および__correct_コンプリーターを支援します。詳細については、zshcompsys(1)のマニュアルページを参照してください。

6
Frank Terbeck

これを修正するための厄介な方法があります。 mvcp、およびmkdirの動作を修正するには、これを.zshrcファイルに追加します。

alias mv='nocorrect mv'
alias cp='nocorrect cp'
alias mkdir='nocorrect mkdir'

これはいくつかの理由で理想的な修正ではありません。特に、mvコマンドのスペル修正が必要な場合がありますdo。たとえば、実行しようとした場合:

mv directory_a/sub/sub/some_file directory_b/sub/sub/

しかし、ディレクトリの1つをスペルミスして、入力することになりました

mv directory_a/sub/sub/some_file directry_b/sub/sub/

スペル修正が役に立ったかもしれません。 (これは明らかに不自然な例ですが、要点はわかります。)

5
iconoclast