我已经看到很多这样做
autoload -Uz compinit
compinit

和其他人这样做
autoload -U compinit
compinit -i

我想知道区别。我应该使用哪一个?

最佳答案

autoload,来自man zshbuiltins


标志-z-k标记要在本机或ksh仿真中自动加载的功能,就像分别未设置或设置选项KSH_AUTOLOAD一样。


可以追溯-U标志:autoload等效于function -u,等效于typeset -f。简而言之,typeset用于:


设置或显示外壳参数的属性和值。


-f-U结合使用时:


[-f标志导致]名称是指函数而不是参数。 ... -u和-U标志使该函数被标记为自动加载; -U还会导致在加载函数时抑制别名扩展。


compinit是“较新的” Z-Shell完成系统compsys使用的完成初始化功能。有关详细信息,请参见man zshcompsys

-i标志用于:


要使compinit默默地忽略所有不安全的文件和目录,请使用-i选项


通常,根据this interesting read,您应该使用autoload -Uz

08-18 16:27