函数文件夹中未找到 zsh + oh-my-zsh 函数

函数文件夹中未找到 zsh + oh-my-zsh 函数

我的 $ZSH 设置为 /home/goldy/.oh-my-zsh

我有这个文件

# $ZSH/functions/run_after_save
function run_after_save {
  # my logic here
}

并且我的 fpath 确实包含了函数文件夹:

$ echo $fpath
# many lines omitted for brevity ...
/home/goldy/.oh-my-zsh/functions

但是当我尝试run_after_save从脚本调用或直接在终端中输入时,我得到:

$ run_after_save
zsh: command not found: run_after_save

有什么线索吗?

这是我尝试放在$ZSH/functions文件夹下的第一个函数

答案1

与命令和不同$path,函数仅在你的 中是不够的$fpath。在调用函数之前,你需要先autoload执行以下代码:

autoload -Uk run_after_save

或者你也可以autoload 全部目录中的函数functions,例如,在您的.zshrc文件内部:

setopt EXTENDED_GLOB  # Enables ~ operator.
autoload -Uk $ZSH/functions/*~*.zwc  # Exclude compiled zsh byte code.

请注意,要使此方法有效,同一目录中的所有函数都应写入期望KSH_AUTOLOAD设置。如果您同时拥有ksh-style 和zsh-style 函数,则将它们放在两个单独的目录中更简单,因此您可以使用autoload前者-k,使用后者-z。(或者更好的是,将您的函数编写为没有 KSH_AUTOLOAD,因此您可以随时使用-z。)

相关内容