vim: use coroutine to process composite commands