Zsh zinitはエイリアスをスキップし、OhMyZshプラグインをロードします。

Zsh zinitはエイリアスをスキップし、OhMyZshプラグインをロードします。

zinitを使用してzshからgitコンプリートをロードするためにこのプラグインを使用したいと思います。

zinit wait lucid for \
  OMZL::git.zsh \
  OMZP::git

しかし、私はエイリアスに興味がありません。私のエイリアスが多すぎます。

これらのエイリアス定義をスキップするにはどうすればよいですか?

プラグインのロード中にaliasコマンドを無効にしようとしましたが、機能しません。

zinit wait lucid for \
  atinit"alias alias=" \
  atload"unalias alias" \
  OMZL::git.zsh \
  OMZP::git

どんなアイデアがありますか?

答え1

うまく動作するようなこのソリューションを見つけました。

zinit wait lucid for \
  atinit'save_aliases=$(alias -L)' \
  atload'unalias -m "*"; eval ${save_aliases}; unset save_aliases' \
  OMZP::git

powerlevel10kを使用しているため、OMZL :: git.zshライブラリも削除しました(重複)。

ただし、このトリックを他のプラグイン(kubeやgitプラグインなど)に追加すると、プラグインロードシステムが非同期的に実行されるため、副作用があります。

その結果、これまではうまくいくようです。aliasプラグインをロードする前に(プロダクションステップ)、コマンドエイリアスを空白のままにしました。

zinit ice as"completion"
zinit wait lucid depth=1 for \
  make'alias alias=' \
  OMZP::docker \
  make'alias alias=' \
  OMZP::docker-compose

注:aliasコマンドはプロセスの終わりに再開されるため、makeステップに追加されたコマンドはzinitロードに制限されると推測されます。

関連情報