!! é expansão do histórico . O primeiro ! inicia uma expansão de histórico; !! tem o designador de evento que significa o comando anterior.
Você pode acessar o histórico de comandos por meio do fc e history incorporados e através do history variável.
Como --vimgrep só faz sentido com ag , seu alias seria mais útil se aplicado ao último comando ag . Você pode localizar o comando anterior ag da seguinte forma:
${${(M)history:#ag *}[1]}
Além disso, você precisará injetar --vimgrep no comando.
alias edit-last='vim -q<(eval "${${(M)history:#ag *}[1]} --vimgrep")'
O último comando ag não fará mais sentido se você tiver alterado o diretório atual. Isso é difícil de detectar. Você pode querer colocar na lista de permissões comandos aceitáveis. Este não é um teste perfeito, claro.
edit-last () {
local cmd
setopt local_options extended_glob
for cmd in $history; do
case $cmd in
((ls|(cvs|git|hg|svn) status)(| *)) :;;
("ag "*) vim -q<(eval "$cmd --vimgrep"); return;;
(edit-last) :;;
(*) echo >&2 "The previous ag command is too old."; return 125;;
esac
done
}