任何获取在 zsh 中定义的函数列表的方法(如别名的 alias 命令)

jus*_*don 28 zsh

我可以打字

alias
Run Code Online (Sandbox Code Playgroud)

并在 zsh 中获取已定义别名的列表

如何获取在 zsh 中定义的函数名称列表?

当我输入“functions”时,我的shell窗口在显示了很多函数后挂起,总是以

__rvm_checksum_none () {
    [[ -z "${_checksum_md5:-}" && -z "${_checksum_sha512:-}" ]]
}
__rvm_checksum_read () {
Run Code Online (Sandbox Code Playgroud)

超级烦人的是,这不会用 ctrl-c 退出(使用 item2 AND 终端)。

iterm2: 在此处输入图片说明

有同样问题的终端图片: 在此处输入图片说明

mpy*_*mpy 32

通过查看_functions完成功能作弊,我可以回答您的问题:

这些函数存储在一个关联数组中functions,因此要按字母顺序(用于排序的标志)仅获取函数名称(k用于键的o标志),您可以使用

print -l ${(ok)functions}
Run Code Online (Sandbox Code Playgroud)

  • @JS,为了排除前导下划线函数,它是`print -l ${(ok)functions[(I)[^_]*]}`(对我来说非常重要,似乎值得分享) (4认同)
  • @克里斯:好点。我已经将“过滤掉”解释为“仅”,但也许它的意思是“省略”... (3认同)
  • @JS。像这样:`print -l ${(ok)functions[(I)_*]}`,参见`man zshparam`中的`ARRAY PARAMETERS / Subscript Flags`部分。 (2认同)
  • @克里斯完美!谢谢你的分享。变成了一个别名! (2认同)