ArchLinuxでKaoriya-Vimをビルド(Git版)

# はじめに

本記事は僕の個人ブログ( [THE SNOWBALL](http://blog.baboocon.com) )からの転載です。

[ArchLinuxでKaoriya-Vimをビルド(Git版) - THE SNOWBALL](http://blog.baboocon.com/posts/2015-11-23-building-kaoriya-vim-on-archlinux/)

## ArchLinuxでKaoriYa-VimをGitリポジトリからビルドする

Windowsでは[香り屋](http://www.kaoriya.net)さんの配布しているコンパイル済みVimが使えます。またMac OSXでは他の有志の方が香り屋パッチを当てた MacVim-kaoriya のバイナリを使うことができます。

プライベートでUbuntuを使っているので、UbuntuでもKaoriya-Vimを使いたいと考えて試みたところ上手くいったので、以前、[Qiita](http://qiita.com)に下記のエントリを投稿しました。

[Ubuntuでkaoriyaパッチとmigemoを有効にしてVimをビルド](http://qiita.com/baboocon/items/bd8b4c7bdea038a6cb8e)

当時はVim公式の開発のバージョン管理にMercurialが使われていたため、上記エントリでもそれに合わせたビルド手順を紹介しました。

その後、Vimの公式リポジトリがGoogleCodeからGitHubに2015年8月に正式移行し、バージョン管理システムもMercurialからGitに変更されました。

また個人的な事情として最近はUbuntuの他にArchLinux(正確にはArchから派生した[Antergos](https://antergos.com/))を使っているので、ArchLinuxでもKaoriya-Vimをビルドできないか試した結果うまくいったので紹介します。

前置きが長くなりましたが、今回紹介する内容は

- Gitリポジトリに移行したVimをソースからビルドする
- 素のVimではなく香り屋パッチを当てる
- C/migemoを使えるようにする
- ビルドを行う環境はArchLinux(Antergos)
- ほとんど同じやり方でUbuntuでもビルドできる

というものになります。

## コンパイル環境

- Antergos Linux(ArchLinuxにGUIパッケージマネージャがついた派生ディストロ)
- gcc version 5.2.0
- Gitが使えること(versionは特に問わない)
- cmigemoは別途インストール
- guiltも別途インストール

香り屋版では各種のパッチを当てていますが、Mercurialではパッチ管理のサブコマンドとしてmqが使われているのに対してGitでは今のところデファクトスタンダードに相当するものがないという違いがあったりするようです。Windows版Kaoriya-Vimではguiltというコマンドを使っているようなので今回はそれに合わせてみました。

### C/migemoのインストール

ローマ字で検索が可能になるC/migemoをインストールします。
ソースからコンパイルするにはGitHubのREADMEにしたがい以下のようにします。
なお、以下の説明では作業ディレクトリはすべて```~/src```下とします。

```
% cd ~/src
% git clone git@github.com:koron/cmigemo.git
% cd cmigemo
% ./configure
% make gcc
% make gcc-dict
% make gcc-install
```

デフォルトでは```/usr/local```以下にインストールされます。

ArchLinuxだとAURでcmigemo-gitというパッケージがあるのでそちらをインストールする方が楽かも知れません。その場合、インストール場所は```/usr```下になります。

### guiltのインストール

Gitでのパッチ管理コマンドであるguiltをインストールします。

guiltに関してはほとんどウェブ上での情報がありませんが、香り屋VimのGitHubリポジトリにセットアップ手順が書かれていたのでその通りにやります。

```
% cd ~/src
% git clone git@github.com:koron/guilt.git ./guilt
% cd guilt
% make install
```

これでguiltコマンドが使えるようになるはずです。

## Vimと香り屋パッチのソースコードを取得

Vim本体と香り屋パッチのリポジトリをそれぞれGitHubからクローンします。

```
% cd ~/src
% git clone git@github.com:vim/vim.git ./vim
% git clone git@github.com:koron/vim-kaoriya-patches.git ./patches
```

## パッチの適用

vimのリポジトリに移動し、guiltで適用するパッチの場所の設定をします。
このとき、そのままmasterブランチで作業してもいいのですが、後々バージョンを上げることを考えると使い捨てられるブランチを切っておきます。
なお、この記事を書いている時点で香り屋パッチはVim 7.4.884に公式に対応していますが、今回は欲をかいてVim本体のパッチレベルを最新の7.4.936で試みます。

```
% cd ~/src/vim
% git checkout -b v7-4-936
% git config guilt.patchesdir ../patches
% guilt init
```

```guilt init``` コマンドで ```~/src/patches/``` ディレクトリ下にVimのブランチと同じ ```v7-4-936``` というディレクトリが生成されます。

ただしこのままでは ```v7-4-936/``` は空のディレクトリなので、```~/src/patches/master/``` の中身を丸ごとコピーしてください。

```vim/src``` ディレクトリに移動して、guiltでパッチを当てます。

```
% cd ~/src/vim/src
% guilt push -a
```

Vimのパッチレベルが7.4.936では2011-remove-client-edge.diff のところで失敗します。

2011-remove-client-edge.diffの中身を見ると、```src/gui_w32.c``` を修正しています。

Vim本体のコミット履歴を見てみると、パッチ7.4.930で同じファイルのほぼ同じ箇所に修正を加えていました。

Windows向けのパッチなのでArchLinuxには関係ないですが、いずれにしても最新のVimでは2011-remove-client-edge.diffは不要なので外しておきます。

```~/src/patches/v7-4-936/series``` をエディタで開いて、2011-remove-client-edge.diffの行を削除しましょう。

再度、

```
% guilt push -a
```

とすると残りは幸い問題なくパッチが適用されました。guiltでパッチを適用すると、 ```guilt/元のブランチ名``` というブランチが新たに作られます。今回の例でいうと ```guilt/v7-4-936``` となります。

```
% guilt applied
```

でパッチが適用されているか確認できます。

## cmigemoに対応したconfigureの作成

香り屋パッチを適用すると、```vim/src/configure.in``` にmigemoに関する設定が生成されます。しかし、```vim/src/auto/configure``` は自動的には更新されませんから、このまま ```./configure``` しても-enable-migemo オプションが有効になりません。 ```vim/src``` に移動してから ```make autoconf``` を実行します。

```
% cd ~/src/vim/src
% make autoconf
```

これで、```vim/src/auto/configure``` が更新され、中身をのぞいてmigemoで検索すると関数やヘッダファイル名でヒットするはずです。

## configure、そしてmake

ここまで来たら、あとは ```./configure``` してコンパイルするだけです。

ただしこのとき注意しなければならないのは、上記で ```make autoconf``` した直後は ```vim/src/``` にいるので、1つ上の ```vim/``` に戻ってから ```./configure``` する必要がある点です。

```
% cd ../
% ./configure
```

以前にUbuntuで試したときは少々違うconfigureの生成方法だったせいか、 ```vim/src/``` ディレクトリから ```./configure``` してうまく行ったので、ここでハマってしまいました。

### configure オプション

さて、configureするときのオプションですが、これは人によって好みがあるので僕が使った設定を紹介するに留めます。

```
% LIBS="-lmigemo" ./configure \
  --prefix=/usr/local \
  --with-features=huge \
  --enable-gui=gtk2 \
  --enable-multibyte \
  --enable-perlinterp=dynamic \
  --enable-pythoninterp=dynamic \
  --enable-tclinterp \
  --enable-rubyinterp=dynamic \
  --enable-luainterp=dynamic \
  --with-lua-prefix=/usr \
  --with-luajit \
  --enable-gpm \
  --enable-cscope \
  --enable-fontset \
  --enable-migemo \
  --enable-fail-if-missing
```

ただし、C/migemoを使うためには以下の2点だけは忘れないでください。

- ./configure の前にLIBS="-lmigemo"を指定する。
- --enable-migemo オプションを指定する。

それから、大量のオプションをコマンドラインで直打ちするのはタイプミスの恐れがあるので、上記のようなコマンドを記述したシェルスクリプトを作って実行するのがいいのではないかと思います。

### make & インストール

configureして特に問題なければいよいよコンパイルしてインストールです。

```
% make
% sudo make install
```

sudoをつけるのは ```/usr/local``` にインストールするから(書くまでもないかも知れませんが)。

### パスを通す

インストール場所にあらかじめパスが通っていなければ、```/usr/bin/vim``` が優先されてしまうのでパスを通しましょう。

.bashrc や .zshrc に以下のように追記してターミナルを再起動するか```source .bashrc``` or ```source .zshrc``` で再読み込みさせます。

```
export PATH=/usr/local/bin:$PATH
```

### +kaoriya +migemoになっていることを確認

コマンドラインで

```
% vim --version
```

とたたくか、Vimを起動してから

```
:version
```

と打ち、+kaoriya +migemo と表示されていれば無事に香り屋パッチとcmigemoは有効になっています。

![20151123_kaoriya-vim-7-4-936-on-antergos.png](https://qiita-image-store.s3.amazonaws.com/0/24530/79b08acd-517a-9e91-5831-3ccc202cc49d.png)

お疲れ様でした。

## 余談

ここまで書いてきた内容ですが、実をいうと大半はArchLinux固有の話はなく、Ubuntuをはじめ他のLinuxディストリビューションにも当てはまる内容です。

もう一つ、今回はVimのソースコードと香り屋パッチを別々に取得するというやり方でしたが、下記の参考ページにもある香り屋さんのGitHubリポジトリにはそれらのソースと各種プラグインなどがが同梱された [koron/vim-kaoriya](https://github.com/koron/vim-kaoriya) があります。

僕のやり方がまだるっこしいと思われる方はそちらをクローンしてお試しください。

### 参考にしたページ

- [koron/vim-kaoriya - GitHub](https://github.com/koron/vim-kaoriya)
- [KaoriYa-Vimをコンパイル](http://d.hatena.ne.jp/sasaplus1/20130731/1375279146)
- [Linuxでkaoriyaパッチ&migemoを有効にしてvimを最新ソースからインストールした](http://deris.hatenablog.jp/entry/20120817/1345183111)
- [vim-jp >> Linuxでのビルド方法](http://vim-jp.org/docs/build_linux.html)
- [Blue glass block: vim +kaoriya build on ubuntu.](http://blueglassblock.blogspot.jp/2013/02/vim-build-on-ubuntu.html)