I recently switched to macvim, Everything work perfectly apart from the :shell command, which produces weird output, I tried few solutions but noting seems to me working out.


\n\w\n\u $ [72004h

Solutions that I already tried. I add this to my .zshrc.


if [ $TERM == 'dumb' ]; then
   echo 'frrank MacVim'


if [ $TERM == 'dumb' ]; then
   # no colors
   export PS1="\n\w\n\u $ "
   # colors
   export PS1="\n\[\033[32m\]\w\n\[\033[1;31m\]\[\033[1;36m\]\u\[\033[0m\] $ \[\033[0m\]"

1 Answer 1


The problem is that MacVim only provides some bare-bones facilities for emulating a terminal, and doesn't support "advanced" features such as a wide range of common terminal escape characters. You'll get the same problem when running :shell from Gvim on Windows or Linux.

Vim doesn't change the TERM when using :shell. You can still set it yourself:

:let $TERM = 'dumb'

This should make your workaround in the zshrc file work. You will probably run in to problems with other commands though. Also see How do I know I am in a shell from vi command :sh?

You'll have to either run Vim from a terminal or use NeoVim – which includes a full terminal emulator – if you want to use a fully-functional :shell.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.