-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Building Vim from source
Compiling Vim from source is actually not that difficult. Here's what you should do:
sudo apt install libncurses5-dev libgtk2.0-dev libatk1.0-dev \
libcairo2-dev libx11-dev libxpm-dev libxt-dev python2-dev \
python3-dev ruby-dev lua5.2 liblua5.2-dev libperl-dev git
On Ubuntu 16.04, liblua5.2-dev
is the lua dev package name not lua5.2-dev
.
You can get the name of the package by using the command dpkg -l | grep lua
to check in your system.
(If you know what languages you'll be using, feel free to leave out
packages you won't need, e.g. Python2 python-dev
or Ruby ruby-dev
.
This principle heavily applies to the whole page.)
sudo yum install -y ncurses-devel ruby ruby-devel lua lua-devel luajit \
luajit-devel ctags git python python-devel \
python3 python3-devel tcl-devel \
perl perl-devel perl-ExtUtils-ParseXS \
perl-ExtUtils-XSpp perl-ExtUtils-CBuilder \
perl-ExtUtils-Embed
This step is needed to rectify an issue with how Fedora 20 installs XSubPP:
# symlink xsubpp (perl) from /usr/bin to the perl dir
sudo ln -s /usr/bin/xsubpp /usr/share/perl5/ExtUtils/xsubpp
sudo apt remove vim vim-runtime gvim
On Ubuntu 12.04.2 you probably have to remove these packages as well:
sudo apt remove vim-tiny vim-common vim-gui-common vim-nox
Note: If you are using Python, your config directory might have
a machine-specific name (e.g. config-3.5m-x86_64-linux-gnu
).
Check in /usr/lib/python[2/3/3.5] to find yours, and change
the python-config-dir
and/or python3-config-dir
arguments accordingly.
Note for Ubuntu users: You can only use Python 2 or Python 3.
If you try to compile vim with both python-config-dir
and python3-config-dir
,
YouCompleteMe will give you an error YouCompleteMe unavailable: requires Vim compiled with Python (2.6+ or 3.3+) support
, when you start VIM
.
On Ubuntu 16.04, Python support was not working due to enabling both Python2 and Python3. Read answer by chirinosky for workaround.
Add/remove the flags below to fit your setup. For example, you can leave out
enable-luainterp
if you don't plan on writing any Lua.
Also, if you're not using vim 8.0, make sure to set the VIMRUNTIMEDIR variable correctly below (for instance, with vim 8.0a, use /usr/share/vim/vim80a). Keep in mind that some vim installations are located directly inside /usr/share/vim; adjust to fit your system:
cd ~
git clone https://github.com/vim/vim.git
cd vim
./configure --with-features=huge \
--enable-multibyte \
--enable-rubyinterp=yes \
--enable-python3interp=yes \
--with-python3-config-dir=$(python3-config --configdir) \
--enable-perlinterp=yes \
--enable-luainterp=yes \
--enable-gui=gtk2 \
--enable-cscope \
--prefix=/usr/local
make VIMRUNTIMEDIR=/usr/local/share/vim/vim91
The version can be found in the file src/version.h
as below:
// Values that change for a new release.
#define VIM_VERSION_MAJOR 9
#define VIM_VERSION_MINOR 1
On CentOS7(x86_64), change --with-python-config-dir=/usr/lib/python2.7/config
to --with-python-config-dir=/lib64/python2.7/config
.
If you want to be able to easily uninstall vim use checkinstall
.
sudo apt install checkinstall
cd ~/vim
sudo checkinstall
Otherwise, you can use make
to install.
cd ~/vim
sudo make install
Set vim as your default editor with update-alternatives
.
sudo update-alternatives --install /usr/bin/editor editor /usr/local/bin/vim 1
sudo update-alternatives --set editor /usr/local/bin/vim
sudo update-alternatives --install /usr/bin/vi vi /usr/local/bin/vim 1
sudo update-alternatives --set vi /usr/local/bin/vim
the output of vim --version
.
If you don't get gvim working (on ubuntu 12.04.1 LTS), try changing
--enable-gui=gtk2
to --enable-gui=gnome2
If you have problems, double check that you configure
d using the correct Python config
directory, as noted at the beginning of Step 3.
These configure
and make
calls assume a Debian-like distro where Vim's
runtime files directory is placed in /usr/share/vim/vim80/
,
which is not Vim's default. Same thing goes for --prefix=/usr
in the
configure
call. Those values may need to be different with a Linux
distro that is not based on Debian. In such a case, try to remove the
--prefix
variable in the configure
call and the VIMRUNTIMEDIR
in the
make
call (in other words, go with the defaults).
If you get stuck, here's some other useful information on building Vim.