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


13

我可以打字

alias

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

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

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

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

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

iterm2: enter image description here

具有相同问题的终端图片: enter image description here


通常是上市 完成了 functions 内置。如果你首先取消定义有问题的(?)函数,你会得到一个输出: unfunction __rvm_checksum_read
mpy

如果我想获取函数列表(不是完整声明)怎么办?如果我取消该方法的功能,另一个__rvm_curl也会出现问题。
justingordon

看我的回答。但是你描述的行为听起来很奇怪...所以只是出于兴趣:完整列表是否适用于另一个终端模拟器?你能成功使用有问题的功能吗?
mpy

终端与第2项具​​有相同的问题。下面的答案是真棒。虽然我想知道为什么终端只使用'functions'命令挂起(即使用管道输入更少),这有关系吗?这会导致问题吗?
justingordon

我认为在这些函数中有一些非常奇怪的字符序列会弄乱终端。要缩小此范围,您可以将输出重定向到文件 functions > /tmp/foo。如果这是一个zsh问题,这也应该问题。当它是一个终端问题时,它不应该。如果您的问题可能会影响每天的使用 - 我不能说,抱歉。
mpy

Answers:


15

通过看着作弊 _functions 完成功能,我能回答你的问题:

这些函数存储在关联数组中 functions,所以只获取函数名称( k 国旗 按键 )按字母顺序排列( o 国旗 排序 ) 您可以使用

print -l ${(ok)functions}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.