2012-09-24 16 views
11

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

10

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 fosse KSH_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 .

+2

* "- 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