ElementaryOS で Vim をビルドしてみた

             

elementary OSにて、Vim 8.1 を使いたかったので最新版をソースファイルからビルドてみました。vim-jp.org にてまとめられているページに必要な内容は全て記載されているので、そちらを参考にするべきです - Linuxでのビルド方法 | vim-jp 。本記事は、個人的な記録です。

モチベーション

自宅の MacOS で書きかけていた VimScript を ElementaryOS で動作確認した際に、 appendbufline() の呼び出し箇所で Unknown function とのエラーを吐きました。ヘルプには記載があるのになんで? とあれこれ調べて見ると、どうやら Vim8.1 で追加された関数らしい。

しかし、ubuntu の apt では最新の Vim は入らないとのこと - Linuxちからの低い私には細かいことはよくわからないけれど、Ubuntu 公式リポジトリでバージョンが固定されてるとかなんとか。apt コマンドで確認してみても、なるほど確かに 8.0 を指しているようです。

$ apt show vim
Package: vim
Version: 2:8.0.1453-1ubuntu1

ということで最新のソースファイルを取得して、Vim をビルドしてみましょう。

やったこと

冒頭にも書いたとおり、 vim-jp.org に必要な情報は 日本語で 書いてあります🤗 本当にありがたいですね。コミュニティの皆様に感謝しつつ、記載どおり実行してゆきましょう。Linuxでのビルド方法 | vim-jp

buildに必要なパッケージを取得

apt でソースファイルからのビルドに必要な諸々が導入されます。

$ sodo apt build-dep vim

個人的には、lua拡張をつかったプラグインも導入したいので、以下で依存パッケージを導入しておきます。

$ sudo apt install lua5.2 liblua5.2-dev

ソースファイルの取得

Github にて公開されているリポジトリ vim/vim をクローンして最新ソースファイルを取得します。私はローカルリポジトリは ghq で管理しているので、Github からのリポジトリクローンはghq get で行います。もちろん、素の git コマンドでクローンしても何も変わりません。

$ ghq get https://github.com/vim/vim.git
$ ghq look vim/vim

オプション設定 & ビルド

オプションを指定してビルドします。python3連携 と lua連携 を有効にしましたが、もちろんここら辺はお好みでの設定です。というか、オプションが多すぎてびっくりしました。

$ ./configure --prefix=/usr/local \
  --with-features=huge \
  --enable-multibyte \
  --enable-pythoninterp \
  --enable-python3interp \
  --enable-luainterp \
  --enable-fail-if-missing
$ make

ちなみに、Twitter でつぶやいたら、 @uochan さん にビルド時のおすすめオプションを教えてもらいました。ありがたやー。参考: liquidz/cookbooks

インストール

生成された実行ファイルをインストールします。

$ sudo make install

ビルド時のオプションにて、--prefix=/usr/local を指定しているので、/usr/local/bin/vim にインストールされました。/usr/bin/vim に以前のバージョンが残ったままですが、まあPATH指定で/usr/local/binが上位になってるので、気にしない。(雑)

確認

実行できるか、確認してみましょう。

$ type vim
vim is hashed (/usr/local/bin/vim)

$ vim -version
VIM - Vi IMproved 8.1 (2018 May 18, compiled Jan 27 2019 15:36:11)

ということで、無事 Vim8.1 がインストールできました😋
appendbufline() が動くことも確認して一安心。

あとがき

ビルド時のオプションなど、必要に応じて色々調整して行きたいという気持ち。

おわり


comments powered by Disqus