Qualquer maneira de obter a lista de funções definidas no zsh (como o comando alias para aliases)

18

eu posso digitar

alias

e obtenha uma lista de aliases definidos no zsh

Como posso obter uma lista de nomes de funções definidos no zsh?

Quando digito "funções", minha janela do shell trava depois de exibir muitas funções, sempre terminando em

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

O que é super irritante é que isso não será encerrado com ctrl-c (usando o item2 AND terminal).

iterm2: insira a descrição da imagem aqui

Imagem do terminal com o mesmo problema: insira a descrição da imagem aqui

justingordon
fonte
Normalmente, a listagem é feita com o functionsbuiltin. Você obtém uma saída se você definir a função problemática (?) Primeiro unfunction __rvm_checksum_read:?
mpy
E se eu quiser obter a lista de funções (não declarações completas)? Se eu cancelar o funcionamento desse método, outro __rvm_curl também terá problemas.
justingordon
Veja minha resposta. Mas o comportamento que você descreve parece estranho ... por isso não interessa: a lista completa funciona com outro emulador de terminal? Você pode usar as funções problemáticas com êxito?
Mpy #
terminal tem o mesmo problema que o item 2. A resposta abaixo é INCRÍVEL. Embora eu queira saber por que o terminal trava apenas usando o comando 'functions' (mesmo quando canalizado para menos), isso importa? Algum motivo para isso causar problemas?
justingordon
Suponho que existem algumas seqüências de caracteres realmente estranhas nessas funções que atrapalham o terminal. Para restringir isso, você pode redirecionar a saída para um arquivo functions > /tmp/foo. Se for um problema do zsh, isso também deve ter ocorrido. Quando é um problema terminal, não deveria. Se o seu problema pode interferir no uso diário - não posso pedir desculpas.
Mpy #

Respostas:

19

Com a trapaça observando a _functionsfunção de conclusão, sou capaz de responder à sua pergunta:

As funções são armazenadas em uma matriz associativa functions; portanto, para obter apenas os nomes das funções ( ksinalizador para teclas ) em ordem alfabética ( osinalizador para pedido ), você pode usar

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