Ok, parece que o EOF foi muito mais sensível do que eu esperei
isso não funciona
vim -E -s dummy.out <<-EOF
:%s/old/new/g
:%s/old2/new2/g
:%s/old3/new3/g
:update
:quit
EOF
isso faz
vim -E -s dummy.out << EOF
:%s/old/new/g
:%s/old2/new2/g
:%s/old3/new3/g
:update
:quit
EOF