N'importe quel moyen pour obtenir la liste des fonctions définies dans zsh (comme la commande d'alias pour les alias)

18

je peux taper

alias

et obtenir une liste des alias définis dans zsh

Comment obtenir une liste de noms de fonctions définis dans zsh?

Lorsque je tape "fonctions", ma fenêtre shell se bloque après avoir affiché de nombreuses fonctions, se terminant toujours à

__rvm_checksum_none () {
    [[ -z "${_checksum_md5:-}" && -z "${_checksum_sha512:-}" ]]
}
__rvm_checksum_read () {

Ce qui est super ennuyeux, c'est que cela ne s'arrêtera pas avec ctrl-c (en utilisant le terminal item2 AND).

iterm2: entrez la description de l'image ici

Image du terminal ayant le même problème: entrez la description de l'image ici

justingordon
la source
Habituellement, la liste se fait avec la fonction functionsintégrée. Avez - vous une sortie si vous UNDEFINE la fonction problématique première (?): unfunction __rvm_checksum_read?
mpy
Et si je veux obtenir la liste des fonctions (pas les déclarations complètes)? Si je ne fonctionne pas avec cette méthode, un autre __rvm_curl a également des problèmes.
justingordon
Voir ma réponse. Mais le comportement que vous décrivez semble étrange ... donc juste par intérêt: la liste complète fonctionne-t-elle avec un autre émulateur de terminal? Pouvez-vous utiliser les fonctions problématiques avec succès?
mpy
terminal a le même problème que l'élément 2. La réponse ci-dessous est IMPRESSIONNANTE. Bien que j'aimerais savoir pourquoi le terminal se bloque simplement en utilisant la commande «fonctions» (même lorsqu'il est redirigé vers moins), est-ce important? Une raison pour laquelle cela causera des problèmes?
justingordon
Je suppose qu'il y a des séquences de caractères vraiment étranges dans ces fonctions qui gâchent le terminal. Pour affiner cela, vous pouvez rediriger la sortie vers un fichier functions > /tmp/foo. Si c'est un problème zsh, cela devrait aussi avoir un problème. Quand c'est un problème terminal, il ne devrait pas. Si votre problème peut interférer avec l'utilisation quotidienne - je ne pourrais pas dire, désolé.
mpy

Réponses:

19

Avec la triche en regardant la _functionsfonction d'achèvement, je suis en mesure de répondre à votre question:

Les fonctions sont stockées dans un tableau associatif functions, donc pour obtenir uniquement les noms de fonction ( kindicateur pour les clés ) dans l'ordre alphabétique ( oindicateur pour l' ordre ), vous pouvez utiliser

print -l ${(ok)functions}
mpy
la source