ho visto molti fare questo
autoload -Uz compinit
compinit
e altri fare questo
autoload -U compinit
compinit -i
Vorrei conoscere la differenza. quale dovrei usare?zsh differenza completamento
risposta
autoload
, da man zshbuiltins
:
Le bandiere
-z
e-k
segnano la funzione per essere caricata automaticamente in emulazione nativa o ksh, come se l'opzione fosseKSH_AUTOLOAD
impostato o sono stati fissati, rispettivamente.
Il -U
bandiera può essere fatta risalire: autoload
è equivalente a function -u
, che equivale a typeset -f
. typeset
, in poche parole, è utilizzato per:
Impostare o visualizzare attributi e valori per i parametri della shell.
Quando -f
viene utilizzato in combinazione con -U
:
[Le cause -f] I nomi si riferiscono a funzioni anziché parametri. ... I flag -u e -U fanno sì che la funzione venga contrassegnata per l'autoloading; -U causa anche la soppressione dell'espansione alias quando la funzione viene caricata.
compinit
è la funzione di inizializzazione utilizzato dal completamento compsys
, il sistema di completamento Z-Shell 'recente'. Vedi man zshcompsys
per i dettagli.
La bandiera -i
viene utilizzato per:
per rendere compinit silenziosamente ignorare tutti i file insicuri e le directory di utilizzare l'opzione -i
In generale, si dovrebbe utilizzare autoload -Uz
, secondo this interesting read .
* "- Uz"? Sì, questa è "la cosa giusta" [tm] quasi sempre, quindi non ne parlerò qui * - meh, l'unica parte che stavo cercando non è in realtà spiegata nell'articolo – ThiefMaster