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

22

5

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 https://github.com/vim/vim/archive/v7.4.2210.tar.gz
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 root@apple.com
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?

Adam Barnes

Posted 2016-08-18T21:26:44.313

Reputation: 525

1Did you try brew install vim --without-python --with-python3 (that is, explicitly specify --without-python as well). – sideshowbarker – 2016-08-19T06:54:55.860

1Yes, but that didn't work. I needed to uninstall vim completely and do brew cleanup, then brew install vim --with-python3 worked. – Adam Barnes – 2016-08-21T00:05:54.337

Have you by any chance figured the solution, @AdamBarnes? For some reason, I'm right now failing to build Homebrew's vim8 --with-python3... – A S – 2016-11-08T20:23:37.317

I'd try brew remove vim then brew cleanup, then try the command listed in my comment from 21/08. If that doesn't work then I have no idea; I'm fairly convinced mine working now is a fluke - hence not posting my comment as an answer. – Adam Barnes – 2016-11-09T10:56:55.873

Answers

21

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

jacob-ogre

Posted 2016-08-18T21:26:44.313

Reputation: 326

2this now reports Warning: vim: this formula has no --with-python3 option so it will be ignored! – Tommy – 2018-05-11T16:15:40.770

8@Tommy, that's because Python3 is now the default python in Homebrew. If you run brew info vim, you'll see that there's an option (--with-python@2) to use Python2 instead of Python3. – Michael - Where's Clay Shirky – 2018-05-11T21:13:46.000

@Tommy May I further infer that you are looking at this question today because Homebrew recently installed or upgraded python@2, perhaps as a dependency, and it's confounding your Vim scripts? – Michael - Where's Clay Shirky – 2018-05-11T21:16:25.417

4

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

jayven

Posted 2016-08-18T21:26:44.313

Reputation: 141

1It seems that install vim with brew and python 3 support also requires python to be install with brew and set in the path. – swade – 2018-03-16T17:25:07.673

3

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: https://www.reddit.com/r/vim/comments/8iymh8/vim_in_osx_with_python3_support/dyx1b94/

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

Ali Cirik

Posted 2016-08-18T21:26:44.313

Reputation: 131

It seems to me that you’re reporting that somebody else got it to succeed.  Do you have first-hand experience with this?  Can you explain what Adam needs to do to get it to work on his system? – Scott – 2018-10-30T17:33:32.367

@Scott thanks for the comment. Yes, I tried this before posting the answer. 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
  5. < – Ali Cirik – 2018-10-30T20:03:35.607

Thanks for responding.  Please [edit] your answer to include the relevant information.   (You’ll be able to format it better there.) – Scott – 2018-10-31T01:43:41.783

3

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

Erik Westrup

Posted 2016-08-18T21:26:44.313

Reputation: 131

2

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

YaOzI

Posted 2016-08-18T21:26:44.313

Reputation: 459

Thanks, for me --with-python3 wasn't working with brew but using ports made the trick. – user2457012 – 2019-04-02T13:31:42.920

0

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.

ji-ruh

Posted 2016-08-18T21:26:44.313

Reputation: 141

0

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

aeb0

Posted 2016-08-18T21:26:44.313

Reputation: 121

5vim: this formula has no --with-python3 – swade – 2018-03-16T17:06:44.317

0

It's possible that vim is still resolving to the Apple-installed version. See: https://stackoverflow.com/questions/33313708/apples-vim-always-used-instead-of-homebrew

Lyle

Posted 2016-08-18T21:26:44.313

Reputation: 277

1You can try echo $EDITOR to see if it's set to vi (pointing to Apple's vim) or vim, which is presumably your own. – Michael - Where's Clay Shirky – 2018-08-30T18:45:17.523