Você basicamente já sabe a resposta de aqui . É muito fácil colocar tudo isso assim:
function insert_files() {
vifm -f < /dev/tty > /dev/tty
while read l; do
LBUFFER+="'$l' "
done < ~/.vifm/vimfiles
zle reset-prompt
}
zle -N insert_files
bindkey '^t' insert_files
Eu não sou um usuário zsh, então eu roubei a estrutura do código da resposta do Lucas. Quanto ao bash, eu estava procurando uma maneira de processar a saída do comando externo dentro do atalho, mas não encontrei um.
P.S. Meu código contém escape bastante primitivo, você pode querer melhorar isso e talvez mudar a maneira como o espaçamento é adicionado entre os argumentos.