Altere a função preexec() no seu .zshrc para
function preexec {
local fg_title
if [[ $* == fg* ]]; then
if [[ $* == *%* ]]; then
fg_title=($(jobs ${${(z)1}[2]}))
else
fg_title=($(jobs %%))
fi
title "${fg_title[5,-1]}"
else
title $*
fi
}
O código certamente não é o ideal, mas funciona se você usar fg oder fg %2 para colocar um processo em primeiro plano. No entanto, não consegui fazê-lo funcionar com fg %vi também.