假设我有:
alias gg="git grep"
然后像:
gg "int x"
有效,但是
gg int x
得到投诉。有没有办法将 gg 重写为 zsh 中的函数,以便它获取 gg 之后的所有参数,并将它们填充到字符串中?
谢谢!
gg() { git grep "$*"; }
对于您的特定用例,这是一个坏主意。git-grep
期待一个单参数模式。您正试图让 shell 将您的空间(在 int 和 x 之间)视为模式的一部分。当您尝试以下内容时,这将很快中断:gg foo.*bar
或 shell 可能解释的各种其他内容。所以gg
真正应该引用之后的任何内容。这就是为什么git grep int x
也不起作用:fatal: ambiguous argument 'x': unknown revision or path not in the working tree...
如果您认为这gg
是一个值得的击键保护程序,您应该保持您的 arg 与git-grep
预期一致。您的原始别名对此很好。并继续单引号或双引号,就像您使用任何其他正则表达式接受命令一样。