How do I install vim on OSX with Python 3 support?

In the google searches I've done, the command I should be using is brew install vim --with-python3, which succeeds without error, but then vim --version reports Python 3 as unavailable.

k162:~ asday$ brew install vim --with-python3
==> Using the sandbox
==> Downloading
Already downloaded: /Users/asday/Library/Caches/Homebrew/vim-7.4.2210.tar.gz
==> ./configure --prefix=/usr/local --mandir=/usr/local/Cellar/vim/7.4.2210/share/man --enable-multibyte --with-tlib=ncurses --enable-cscope --with-compiledby=Homebrew --enable-p
==> make
==> make install prefix=/usr/local/Cellar/vim/7.4.2210 STRIP=true
🍺 /usr/local/Cellar/vim/7.4.2210: 1,732 files, 28.5M, built in 52 seconds
k162:~ asday$ vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Oct 27 2015 16:22:14)
Compiled by
Normal version without GUI. Features included (+) or not (-):
-arabic +autocmd -balloon_eval -browse +builtin_terms +byte_offset +cindent
-clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
-conceal +cryptv +cscope +cursorbind +cursorshape +dialog_con +diff +digraphs
-dnd -ebcdic -emacs_tags +eval +ex_extra +extra_search -farsi +file_in_path
+find_in_path +float +folding -footer +fork() -gettext -hangul_input +iconv
+insert_expand +jumplist -keymap -langmap +libcall +linebreak +lispindent
+listcmds +localmap -lua +menu +mksession +modify_fname +mouse -mouseshape
-mouse_dec -mouse_gpm -mouse_jsbterm -mouse_netterm -mouse_sysmouse
+mouse_xterm +multi_byte +multi_lang -mzscheme +netbeans_intg -osfiletype
+path_extra -perl +persistent_undo +postscript +printer -profile +python/dyn
-python3 +quickfix +reltime -rightleft +ruby/dyn +scrollbind +signs
+smartindent -sniff +startuptime +statusline -sun_workshop +syntax +tag_binary
+tag_old_static -tag_any_white -tcl +terminfo +termresponse +textobjects +title -toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo
+vreplace +wildignore +wildmenu +windows +writebackup -X11 -xfontset -xim -xsmp -xterm_clipboard -xterm_save system vimrc file: "$VIM/vimrc" user vimrc file: "$HOME/.vimrc" user exrc file: "$HOME/.exrc" fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -D_FORTIFY_SOURCE=0 -Iproto -DHAVE_CONFIG_H -arch i386 -arch x86_64 -g -Os -pipe
Linking: gcc -arch i386 -arch x86_64 -o vim -lncurses

And doing :py3 print("") within vim returns E319: Sorry, the command is not available in this version.

What is it I'm doing wrong? Do I need to compile vim myself?

4

12 Answers

The following works as of 26 May 2017 when a -python3 version of Vim is already installed via homebrew:

brew remove vim
brew cleanup
brew install vim --with-python3
4

Already get to make it work. vim formula installs vim with python3 support only if python --version is version 3. Doesn't matter if brew install python install python version 3 (because it does in another binary: python3)

From:

Here are my steps:

  1. alias python=python3
  2. brew install vim
  3. at this point, I get +python3 in the vim --version output
  4. unalias python
4

Since version 1.6.0 of Homebrew (2018-04-09), the default python version is 3. Thus, if you have a version of vim installed before this change which is compiled with python2, what you need to do now to get vim with python3 is simply:

$ vim --version | grep python
$ brew uninstall --force vim
$ brew cleanup
$ brew install vim
$ vim --version | grep python
2

I got the same issue today. No matter

brew install vim --with-python3

or

brew install vim --without-python --with-python3

So i check Homebrew's logs at ~/Library/Logs/Homebrew/vim, in 01.configure i found

checking Python is 3.0 or better... too old

This is because configure can not find python3's path

By adding /usr/local/Cellar/python3/3.X.X/bin (your path may be different) to your PATH envoriment and re-run, the vim finally got compiled with +python3

1

Another way to install Vim with Python3 support is using port from The MacPorts Project:

To check how many variants available for VIM and their conflict:

port variant vim

To install vim with python3 support:

sudo port install vim +python37

And to uninstall, just:

sudo port uninstall vim
1

It is because there was an already installed vim in your system which is normally found in /usr/loca/vim

$ which vim

You can try ls /usr/local/Cellar/vim/7.4.2210 and take a look what folders are available. In my system, in that directory i have bin/vim, so I update my .zshrc or similar rc file in your os, update it as

alias 'vim'=/usr/local/Cellar/vim/7.4.2210/bin/vim

When you open a new terminal, then

which vim

It will show the update path. So you can use the python3 inside it.

1

Put the following in you .zshrc or anything . rc:

if (command -v brew && brew list --formula | grep -c vim ) > /dev/null 2>&1; then alias vim="$(brew --prefix vim)/bin/vim"
fi

This will resolve to Homebrew's vim only when homebrew is installed`

2

In latest brew, --with-python3 has been deprecated,here

try this,

brew remove vim
brew cleanup
brew install vim -vd protobuf

restart the terminal, and do

vim --version

As of October 2017 this works.

If you have previously installed vim with homebrew, uninstall it first

brew remove vim
brew cleanup

Then

brew install vim --without-python --with-python3
1

It's possible that vim is still resolving to the Apple-installed version. See:

1

This variation turned out to be my problem:

I was activating a Python VirtualEnv automatically in .bash_profile/.zshrc before adding certain things (such as homebrew) to my path.

The solution was to put the source venv/bin/activate line at the end of .bash_profile, and then run deactivate when I launched my terminal to install vim. At that point, I followed the above answers and ran:

brew remove vim; brew cleanup; brew install vim

and everything was good.

Posting in case any fellow tmux users run into this issue. tmux was using the right shell (zsh in my case), but because my .zshrc file didn't specify the vim installation to use, it defaulted to the system one instead of the new version I installed with python3 support (using brew install vim -vd protobuf iirc). I noticed this by running which vim both inside and outside tmux, which returned different paths. The resolution was to add an alias to my .zshrc file to specify the vim version I wanted to use.

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like