定义名为“:”的函数时导致此行为的原因是什么

定义名为“:”的函数时导致此行为的原因是什么

如果我创建以下函数

function :() {
  echo "hi"
}

然后每当我输入任何字符时,该函数就会被执行当我输入它时,在我点击之前return

这似乎是由我体内的某些东西引起的.zshrc,因为它确实不是如果我用 启动 Z shell 就会发生这种情况zsh -f,而在 Bash 中不会发生这种情况。

我怎样才能找出是什么导致了这种奇怪的行为?

答案1

内置函数:什么也不做(它是无操作)。它在 zsh 的完成代码等许多地方使用。它很可能用在一些与键绑定相关的代码中。如果您用函数覆盖它,则预计您的函数会被多次调用。

用完全不同的东西覆盖标准命令名称是一个坏主意。但如果您确实想定义自己的:,请将其作为别名(具有更长、明确名称的函数)。这样,它就不会影响自动加载的函数(除了autoload不带-U选项显式自动加载的函数 - 因此每当您使用autoload, pass -U),包括完成代码。

相关内容