1

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.

:shell

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

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

1:

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

2:

if [ $TERM == 'dumb' ]; then
   # no colors
   export PS1="\n\w\n\u $ "
else
   # colors
   export PS1="\n\[\033[32m\]\w\n\[\033[1;31m\]\[\033[1;36m\]\u\[\033[0m\] $ \[\033[0m\]"
fi
Martin Tournoij
  • 62,054
  • 25
  • 192
  • 271
farhan
  • 113
  • 6

1 Answers1

2

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'
:shell

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.

Martin Tournoij
  • 62,054
  • 25
  • 192
  • 271