如果我创建以下函数
function :() {
echo "hi"
}
然后每当我输入任何字符时,该函数就会被执行当我输入它时,在我点击之前return!
这似乎是由我体内的某些东西引起的.zshrc
,因为它确实不是如果我用 启动 Z shell 就会发生这种情况zsh -f
,而在 Bash 中不会发生这种情况。
我怎样才能找出是什么导致了这种奇怪的行为?
答案1
内置函数:
什么也不做(它是无操作)。它在 zsh 的完成代码等许多地方使用。它很可能用在一些与键绑定相关的代码中。如果您用函数覆盖它,则预计您的函数会被多次调用。
用完全不同的东西覆盖标准命令名称是一个坏主意。但如果您确实想定义自己的:
,请将其作为别名(具有更长、明确名称的函数)。这样,它就不会影响自动加载的函数(除了autoload
不带-U
选项显式自动加载的函数 - 因此每当您使用autoload
, pass -U
),包括完成代码。