I would suggest using something like syntastic .
To solve the explicit question, you will need to do
au BufWritePost widget.coffee silent !./compile_widget.sh | redraw
The invitation starts as a result of the output of the command. silent suppresses the prompt, but when you do this, Vim does not redraw the screen after the shell command so that you can see the result from the command. Thus, | redraw | redraw forces Vim to redraw the screen.
This is discussed in : help :!
jamessan
source share