Parece que existe uma corrida entre os comandos new-window
e delete-buffer
: isto é, o buffer "PIPE" é deletado antes de ser canalizado para o vim ou qualquer outro programa que você queira executar.
O seguinte hack feio que dorme um segundo antes de chamar delete-buffer
corrige o problema para mim:
bind P command-prompt -I "vim -" \
"capture-pane -eJ -S - -E -; \
set-buffer -n PIPE; \
new-window -n '|%1' 'tmux save-buffer -b PIPE - | %1'; \
run-sh 'sleep 1 && tmux delete-buffer -b PIPE'"