【问题标题】:zsh completion differencezsh完成差
【发布时间】:2012-09-24 18:30:06
【问题描述】:

我见过很多人这样做
autoload -Uz compinit
compinit

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

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

【问题讨论】:

    标签: zsh zshrc zsh-completion


    【解决方案1】:

    autoload,来自man zshbuiltins

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

    -U标志可以追溯:autoload等价于function -u,也就是等价于typeset -ftypeset,简而言之,用于:

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

    -f-U结合使用时:

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

    compinitcompsys 使用的完成初始化函数,“较新”的 Z-Shell 完成系统。有关详细信息,请参阅man zshcompsys

    -i 标志用于:

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

    一般来说,您应该使用autoload -Uz,根据this interesting read

    【讨论】:

    • “-Uz”?是的,这几乎总是“正确的事情”[tm],所以我不会在这里讨论它 - 嗯,我正在寻找的那一部分实际上并没有在文章中解释
    • 我还没有找到-Uz 的更多来源,但我自己对手册页的解释是-z 标记通过zsh 自动加载(即'native'),这是理想的因为你正在运行 zsh。 -U 防止别名扩展,这在加载函数时(可能)很好,因为您可能有覆盖函数名称的别名,并且加载顺序(别名、函数与函数、别名)可能会破坏。
    猜你喜欢
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多