Você pode desativar a sintaxe PATTERN(QUALIFIERS)
desmarcando a opção bare_glob_qual
:
setopt no_bare_glob_qual
Se a opção extended_glob
estiver definida (e você deverá defini-la, a única razão para não configurá-lo é para compatibilidade retroativa com scripts raros que usam sintaxe incomum), então há outra sintaxe para qualificadores glob: PATTERN(#qQUALIFIERS)
. Então você ainda pode usar qualifiers glob, que são um dos recursos mais importantes do zsh, mas você terá que digitar um pouco mais.
O Zsh permite que você desabilite a expansão de curingas (globbing), e isso parece uma escolha melhor para você. Se um comando for prefixado por noglob
, não será executada globbing em seus argumentos. Por exemplo, para poder digitar URLs contendo ?
como argumentos para wget
, tenho alias wget='noglob wget'
. Se você definir alias ag='noglob ag'
, poderá digitar ag mymethod(param)
.
Se ag
tiver um padrão de pesquisa e nomes de arquivo como argumentos, desabilitar a globbing não será bom. Se você conseguir analisar os argumentos de ag
, poderá executar a expansão de curingas neles. Eu não sei a sintaxe de ag
, então eu vou dar um exemplo onde eu assumo que ag
só pega opções que não aceitam argumentos, e que seu primeiro argumento não-opção é um padrão e o resto são arquivos.
ag () {
local i=1
while [[ ${(P)i} = -* ]]; do ((++i)); done
if ((i < $#)); then
set -- "${(@)@[1,$i]}" $~@[$((i+1)),$#]
fi
}
alias ag='noglob ag'