ArchLinuxでzshとoh-my-zshを使用しています。 mkdir
を使用してディレクトリを作成できません
edward@ArchLinux ~ $ Sudo mkdir -p /samba/raspberry
[Sudo] password for edward:
Sudo: nocorrect: command not found
私はそれがzshの自動補完機能と定義されたエイリアスで何かをしなければならないことを知っていますが、理解できません。
このエイリアスは、alias Sudo='Sudo '
で定義されている~/.zshrc
を上書きしたalias Sudo='nocorrect Sudo'
ファイルの最後でsource
dしたファイルに.oh-my-zsh/lib/correction.zsh
定義されています。
alias Sudo='nocorrect Sudo'
は、zshのオートコンプリート機能が機能するために必要です
詳細: zshでSudo [コマンド]の自動修正を無効にする方法は?
しかし同時に、Sudo
に続くコマンドのエイリアスが機能するためにはalias Sudo='Sudo '
が必要です
詳細: Sudoの使用中に.bashrcファイルからエイリアスをロードalias Sudo='Sudo '
はzshでも機能することに注意してください
したがって、Sudo
を使用しているときに、zshのオートコンプリート機能を使用するか、(他のコマンドの)エイリアスを使用することができます。これで、zshのオートコンプリート機能を無効にしました。
(私は明確で混乱しないことを願っています。)
@ edward-torvaldsからの回答に追加するだけで、
.aliasesファイルでは、一部のユーザーに対してタブの使用が十分に表示されない場合があります。エイリアス定義は、読みやすくするためにそのように書くことができます。
alias Sudo=$'nocorrect Sudo\t'
ただし、末尾のspaceには問題がありましたが、末尾のtabには問題がありませんでした。
alias Sudo='Sudo '
alias Sudo='nocorrect Sudo '
上記のエイリアスは、次のようなエラーを引き起こしました。
~$ which mkdir
mkdir: aliased to nocorrect mkdir -p -pv
~$ which Sudo
sudo: aliased to nocorrect Sudo
~$ alias Sudo
Sudo='nocorrect Sudo '
~$ Sudo mkdir /tmp/foo
Sudo: nocorrect: command not found
したがって、これは機能しますalias Sudo='Sudo '
でも私は〜がいい alias Sudo=$'nocorrect Sudo\t'
1K +行のzshrcでは、後者は単純すぎます;)
...誰かが理由を説明できる場合は、コメントしてください!