Zsh zinit 加载 OhMyZsh 插件跳过别名

Zsh zinit 加载 OhMyZsh 插件跳过别名

我想使用这些插件使用 zinit 在 zsh 中加载 git 补全

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

但我不在乎别名,我自己的别名实在太多了。

如何跳过这些别名定义?

我尝试在插件加载时禁用别名命令,但它不起作用

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

我还摆脱了库 OMZL::git.zsh 因为我正在使用 powerlevel10k (它是多余的)

但是将这个技巧添加到其他插件(如 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 加载中。

相关内容