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?
412 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 4Already 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)
Here are my steps:
alias python=python3brew install vim- at this point, I get
+python3in thevim --versionoutput unalias python
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 2I 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
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 1It 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.
1Put 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`
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 1It's possible that vim is still resolving to the Apple-installed version. See:
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.