vimをアップデートしたい
とあるパソコン詳しい友人に勧められてvimを使い始めて半年くらい経つ。
最初は友人が作ったdotfilesのvimrcをまんま使っていたけど、少しづつ自分用にカスタマイズした。
そしてある日友人に自分の設定を見せた。
そして言われた。
「vimのバージョン古くね?」
そう言われりゃそうだ。osのリポジトリからaptで入れてるんだから最新であるはずがない。だったらgithubから落としてコンパイルしよう。
vimコンパイル
まずはvimのリポジトリ探そうって思ったら一瞬で見つかった。
vim/vim
なるほど、ものすごく頻繁にアップデートされているようだ。
まずはREADMEを熟読。ファイルをいくつか辿ってわかったことは、 /path/to/vimsource/src で
$ ./configure
$ make
$ sudo make install
するだけということ。ただしPythonとかを有効にするには、 ./configure のときにオプションが必要らしい。
とりあえずやってみよう。
$ mkdir ~/github/
$ cd ~/github/
$ git clone https://github.com/vim/vim.git
$ cd ./vim/src/
$ ./configure --enable-multibyte \
--enable-luainterp \
--enable-perlinterp \
--enable-pythoninterp \
--enable-python3interp \
--enable-rubyinterp \
--enable-luainterp \
--disable-gui
$ make
$ sudo make install
特にエラーとかも無くできた。コンパイルオプションは、1つ目の --enable-multibyte で日本語を表示出来るようにして、 --enable-*interp で各言語のインタプリタ(?)を有効化して、 --disable-gui でguiを無効化した。vimが最新。嬉しい。
ひとつ問題がある。前述した通りvimはめっちゃ頻繁に更新される。できるだけ最新でいたいから頻繁にアップデートしたい。そうなるといちいちこのコマンドを実行するのはめんどくさい。
よし、スクリプトにしてしまおう。
vim更新スクリプト
以下が完成形。
#!/bin/bash
#インターネットに繋がるか確認
Exec=`nslookup github.com | grep 'timed out' | wc -l`
if [ ${Exec} -ne 0 ]; then
echo "${Exec}[Error] No Internet Connection!"
exit
fi
echo "[Info] Updating Repository"
cd ~/github/vim
git pull origin master
echo "[Info] Configuring"
cd ~/github/vim/src
make distclean
confop="--enable-multibyte "
confop="${confop}--enable-luainterp "
confop="${confop}--enable-perlinterp "
confop="${confop}--enable-pythoninterp "
confop="${confop}--enable-python3interp "
confop="${confop}--enable-rubyinterp "
confop="${confop}--enable-luainterp "
confop="${confop}--disable-gui"
./configure ${confop}
echo "[Info] Making"
make -j2
echo "[Info] Installing"
sudo make install
echo "[Info] Finished!"
~/github/vim にvimのリポジトリがあるのを前提としている。
'make -j2' となっているのはスレッド数を表しているから環境によって変える。
あとはこれを ~/bin/update-vim に保存して、
$ chmod a+x ~/bin/update-vim
として、 ~/bin にパスを通してやれば完成!
次からは
$ update-vim
としてやればいい。
(sudoが使えない環境ではrootでログインして実行しなきゃだけど。)
さいごに...
別の日に友人に
「vimの設定みせて」
って言って、バージョンを見たら自分より低かったから、
「vimのバージョン古くね?(ドヤッ)」
と言ってやった。