Cualquier forma de obtener una lista de funciones definidas en zsh (como el comando alias para alias)

18

puedo teclear

alias

y obtener una lista de alias definidos en zsh

¿Cómo puedo obtener una lista de nombres de funciones definidos en zsh?

Cuando escribo "funciones", mi ventana de shell se cuelga después de mostrar muchas funciones, siempre terminando en

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

Lo que es súper molesto es que esto no se cerrará con ctrl-c (usando item2 AND terminal).

iterm2: ingrese la descripción de la imagen aquí

Imagen de terminal que tiene el mismo problema: ingrese la descripción de la imagen aquí

justingordon
fuente
Por lo general, el listado se realiza con el functionsincorporado. ¿Obtiene una salida si primero define la función problemática (?) unfunction __rvm_checksum_read:?
mpy
¿Qué sucede si quiero obtener la lista de funciones (no declaraciones completas)? Si no funciono ese método, otro __rvm_curl también tiene problemas.
justingordon
Mira mi respuesta. Pero el comportamiento que describe suena extraño ... así que solo por interés: ¿funciona la lista completa con otro emulador de terminal? ¿Puedes usar las funciones problemáticas con éxito?
mpy
terminal tiene el mismo problema que el elemento 2. La respuesta a continuación es IMPRESIONANTE. Si bien me gustaría saber por qué el terminal se bloquea simplemente usando el comando 'funciones' (incluso cuando se canaliza a menos), ¿importa? ¿Alguna razón por la que esto causará problemas?
justingordon
Supuse que hay algunas secuencias de caracteres realmente extrañas en estas funciones que estropean el terminal. Para reducir esto, puede redirigir la salida a un archivo functions > /tmp/foo. Si es un problema zsh, esto también debería haber sido un problema. Cuando se trata de un problema terminal, no debería. Si su problema puede interferir con el uso diario, no podría decir que lo siento.
mpy

Respuestas:

19

Al hacer trampa mirando la _functionsfunción de finalización, puedo responder a su pregunta:

Las funciones se almacenan en una matriz asociativa functions, por lo que para obtener solo los nombres de las funciones ( kmarca para las teclas ) en orden alfabético ( omarca para ordenar ) puede usar

print -l ${(ok)functions}
mpy
fuente