如何让 Bash(或 Zsh)在每次输入命令之前运行特定命令?

如何让 Bash(或 Zsh)在每次输入命令之前运行特定命令?

我想配置 Bash,让它在运行我在提示符下输入的每个命令行之前运行一个特定的命令。具体来说,我想告诉 Vim(在另一个终端中运行)写入所有打开的缓冲区,因为在我的工作流程中,如果我离开 Vim 时没有保存任何内容,那就是一个错误。

Bash 中有这个选项吗?如果没有,Zsh 中有这个选项吗?

(有基于 readline 的解决方案这在某种程度上适合另一个问题上的这个问题,但感觉有点不合时宜。它将把它作为最后的手段。)

答案1

您可以在 zsh 中使用“precmd”来实现这一点。

可能你可能想在 Vim 中配置备份,因为在 precmd 中执行这样的操作对我来说听起来不太对。

答案2

我已经使用伪子 shell 使用内置读取完成了类似的事情,如下所示:

#!/bin/sh
#public domain fake shell template
while read -p "$PS1" CMD; do
   case "$CMD" in
      *bad_case*|*another_bad_case*)echo bad command: user info logged etc..;;
      *)<your_command_here>
         eval "$CMD";;
   esac
done

相关内容