如何在前面没有 'git' 的情况下调用 git 命令?

Flo*_*ian 5 zsh git command

git如果找不到命令,如何告诉我的 zsh 自动尝试前面的命令?例如,我想运行$ status,如果没有statusin $PATH,我的 zsh 应该尝试git status

Gil*_*il' 5

这听起来很脆弱——你可能会养成键入foo而不是键入的习惯git foo,然后有一天会foo出现一个新命令并且foo不再调用git foo——但它可以做到。当使用正常查找(别名、函数、内置、可执行文件PATH)找不到命令时,zsh 会调用该command_not_found_handler函数(如果已定义)。这个函数接收命令和命令的参数作为它的参数。

command_not_found_handler () {
  git "$@"
}
Run Code Online (Sandbox Code Playgroud)

如果你想做一些更高级的过滤,命令是 in$1并且它的参数可以被称为"$@[2,$#]".

command_not_found_handler () {
  if …; then
    git "$1" "$@[2,$#]"
  fi
}
Run Code Online (Sandbox Code Playgroud)

  • 非常脆弱:`git rm` 与 `rm`。 (2认同)