私が持っているとしましょう:
alias gg="git grep"
次に、次のようなものがあります。
gg "int x"
動作しますが
gg int x
苦情を受け取ります。 ggをzshの関数として書き直して、ggの後のすべての引数を取り、それらを文字列に詰め込む方法はありますか?
ありがとう!
gg() { git grep "$*"; }
特定のユースケースでは、これは悪い考えです。 git-grep
は単一引数を期待していますパターン。シェルにスペース(intとxの間)をパターンの一部として処理させようとしています。次のようなことを試みると、これはすぐに壊れます:gg foo.*bar
またはシェルが解釈する可能性のあるその他のさまざまなもの。したがって、gg
以降は実際に引用する必要があります。これが理由です git grep int x
も機能しません:fatal: ambiguous argument 'x': unknown revision or path not in the working tree...
gg
が価値のあるキーストロークセーバーであると思う場合は、それに対する引数をgit-grep
期待します。これには、元のエイリアスで問題ありません。また、他の正規表現を受け入れるコマンドの場合と同じように、パターンを一重引用符または二重引用符で囲みます。