问题:有没有一种简单的方法可以教我zsh
在执行之前检查命令行?我知道我可以用额外的脚本完全包装特定的程序,但这不是我想要做的。
例子:
使用制表符补全,我很容易发生这样的情况:我通过gcc
错误调用覆盖了我的输入文件,例如
gcc test.c -o test.c
代替
gcc test.c -o test
答案1
您可以重新定义accept-line
zle
小部件来执行您想要的所有检查,例如:
accept-line() {
if [[ $BUFFER =~ '^gcc.*-o\s*\S*\.c\b' ]]; then
zle -M 'I will not do that!'
else
zle .$WIDGET "$@"
fi
}
zle -N accept-line