join-lines() { local item while read item; do echo -n "${(q)item} " done } bind-git-helper() { local c for c in $@; do eval "fzf-g$c-widget() { local result=\$(_g$c | join-lines); zle reset-prompt; LBUFFER+=\$result }" eval "zle -N fzf-g$c-widget" eval "bindkey '^g^$c' fzf-g$c-widget" done } bindkey -r "^g" bindkey "^g^g" send-break bind-git-helper f b t r h unset -f bind-git-helper