使 zsh 在未输入命令时运行命令

使 zsh 在未输入命令时运行命令

想象一下我正在终端提示符下输入,但实际上决定不输入任何内容。相反,我只需按 Enter 键即可。

有没有办法让 zsh 现在运行命令?

我想潜在地使这个命令变量,例如重复最后一个命令,或者如果最后一个命令是z然后在空白提示符上按 Enter 键应该运行echo $PWD

我怎样才能做到这一点?

答案1

您可以尝试使用preexecprecmd挂钩:

preexec(){ cmd=$1; }
precmd(){ if [ "$cmd" ]; then lcmd=$cmd; cmd=; else; echo "<no command> last was <$lcmd>"; fi; }

zsh$ :
zsh$
<no command> last was <:>
zsh$ pwd
/home2/ahq

Hook Functions您应该阅读联机帮助页的小节中的全部内容zshmisc(1),尤其是有关传递给 的参数的部分preexec

此外,您可以使用add-zsh-hook:

autoload -Uz add-zsh-hook
add-zsh-hook -Uz precmd my_precmd

相关内容