2xup.org

Vim7.0 + KaoriYa を Mac OSX にインストールする

pre 要素のスタイル定義とマークアップ でも書いたのだけれど、最近 CSSHTML の編集をする時は Vim (version 7.0) を利用しています。Vim を利用するに至った理由は

というのがあります。中でも Omni completion というゴキゲンな補完機能が Vim7.0 を利用する大きなきっかけになっています。

サーバへのインストールの前に、練習を兼ねてメインマシンの Macintosh (Mac OSX) に Vim7.0 をインストールしてみることに。Mac OSX には、既に Vim がインストールされています。しかし、Mac OSX にインストールされている Vim の version は 6.2 です。これでは Omni completion 機能が利用できませんので、Vim7.0 をコンパイルすることに。

せっかくコンパイルするので、合わせて、文書内検索の時にローマ字で日本語を検索できる migemo 検索が利用できるように、C/Migemo のインストールと、KaoriYa パッチを適用しすることにしました。初めての事でいろいろと苦労しましたが、様々なサイトを参考にさせていただき、メモをとりつつ進めてなんとかできました。そのメモを元に備忘録としてまとめておきます。参考にしていただける場合は申し訳ございませんが、自己責任でお願いします。

事前に準備しておくもの

Xcode
make コマンドを利用可能に。Mac OSX の OS インストール CD にも入ってます。
Fink
Fink は Open Source ソフトウェアなどの Unix の世界を Darwin や Mac OS X で使えるようにするためのプロジェクトです。兼その移植したソフトウェアを扱うためのソフト
wget
Vim のソースをとってくるのに利用したりと大活躍なので、$ fink install wget などであらかじめ使えるようにしておく
7za
パッチを拝借する為に Windows 用の KaoriYa 版を解凍するのに必要です

以上が予め用意されていれば、基本的にこの先のコマンドのコピペで作業は進められるはず。あとは作業ディレクトリとして、$ mkdir ~/tmp として tmp ディレクトリを作成。このあとの説明はこの tmp ディレクトリで作業するという前提で書きます。整形して記載している UNIX コマンドは、どのブロックもこの tmp ディレクトリに居るという状態からスタートします。

$ cd ~/tmp

C/Migemo のインストール

Vim7.0 のコンパイル作業を始める前に、文書内検索の時にローマ字で日本語を検索できる migemo 検索が利用できるように、C/Migemo をインストールします。migemo 検索が特に必要無い場合は、この作業はスキップできます。

qkc のインストール

C/Migemo のインストールには、超高速漢字コード変換プログラム qkc が必要です。qkc は Fink で…というのをいくつかの記事で拝見しましたが、うまくいきませんでした。なので、qkc はソースからビルドすることに。qkc のウェブサイトから UNIX 版 (qkcc100.zip) をダウンロードします。

$ wget http://hp.vector.co.jp/authors/VA000501/qkcc100.zip
$ unzip qkcc100.zip

qkc のインストールは QKCのインストール [3-4/18] : サイト更新停滞ちうっ [ 名無しのVIM使い ] さんが大変参考になりました。qkc のインストールには事前に /usr/local/bin にパスを通しておく必要があります。~/.bashrc (.bash_profile) に以下のように設定します。

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

新たに Terminal ウィンドウを開き、$ echo $PATH コマンドで、/usr/local/bin にパスが通っている事を確認したら、インストールを進めます。

$ cd qkcc100
$ make
$ sudo mkdir -p /usr/local/bin
$ sudo cp qkc /usr/local/bin

qkc のインストールが終わったら、C/Migemo のインストールを進めます。KaoriYa さんより C/Migemo をダウンロード(開発版)。解凍後、ディレクトリに移動します。

$ wget http://kaoriya.net/dist/var/cmigemo-1.3c.tar.bz2
$ tar xjvf cmigemo-1.3c.tar.bz2

このままインストールすると、utf-8 の辞書は作られないので、dict.mak にパッチを適用し、インストールします。

$ wget http://2xup.org/repos/vim/cmigemo-dict.diff
$ cd cmigemo-1.3c
$ cat ../cmigemo-dict.diff |patch -p0
$ make osx
$ make osx-dict
$ sudo make osx-install

Vim7.0 のソースをダウンロード

いよいよ Vim7.0 のインストールを進めます。まずはソースをもってきます。

$ wget ftp://ftp.vim.org/pub/vim/unix/vim-7.0.tar.bz2
$ wget ftp://ftp.vim.org/pub/vim/extra/vim-7.0-extra.tar.gz
$ wget ftp://ftp.vim.org/pub/vim/extra/vim-7.0-lang.tar.gz

そして各々解凍

$ tar xjvf vim-7.0.tar.bz2
$ tar xzvf vim-7.0-extra.tar.gz
$ tar xzvf vim-7.0-lang.tar.gz

ここまで終わると、作業ディレクトリには vim70 というディレクトリができています。vim70 ではちょっと気持ち悪いので、僕はディレクトリ名を vim-7.0 に変更しています。これでバージョンもはっきりしますね。

$ mv vim70 vim-7.0

Vim7.0 のソースにパッチの適用

KaoriYa 版 vim7.0 からパッチファイルをいただき、ダウンロード、解凍した Vim7.0 のソースに適用することで、これからコンパイルする Vim7.0 を migemo 検索に対応させたり、日本語のインライン入力などに対応します。特に必要無い場合は、この作業はスキップできます。

KaoriYa パッチの適用

KaoriYa.net から Windows 用の Vim7 のファイルをダウンロードします。

$ wget http://www.kaoriya.net/testdir/vim7-daily-w32j.exe
$ 7za x vim7-daily-w32j.exe

解凍がおわったら、vim-7.0 ディレクトリに移動し、パッチを適用します。

$ cd vim-7.0
$ cat ../vim7-daily-w32j/patches/* |patch -p0

src/auto/configure にもパッチを適用

実は KaoriYa 版 Vim7 からいただいたパッチのみの適用では migemo が有効にならないらしく、僕も何度も失敗したので調べてみたところ同じ悩みを解決している記事がありました。対策は同じく KaoriYa さんの Vim6.4 のファイルを参考に src/auto/configure にもパッチを適用する必要があるそうです。

修正は、コピペできる程度ですが、パッチファイルを用意しましたので、ダウンロードできるようにしておきます。こちらをお使いください。

$ wget http://2xup.org/repos/vim/configure.diff
$ cd vim-7.0
$ cat ../configure.diff |patch -p0

ここまでで、パッチ適用の作業は終了です。

Vim7.0 のコンパイル、インストール

いよいよ ./configure して make そして make install と進め、Vim をコンパイルします。

$ cd vim-7.0
$ ./configure --with-features=big --enable-multibyte
$ make
$ sudo make install

これでコンパイルは完了です。$ ./src/Vim --version でチェックしてみると…。

$ cd vim-7.0
$ ./src/Vim --version
VIM - Vi IMproved 7.0 (2006 May 7, compiled Sep 13 2006 01:24:59)
MacOS X (unix) version
Compiled by xxx@xxx.local
Big version with Carbon GUI.  Features included (+) or not (-):
+arabic +autocmd -balloon_eval +browse ++builtin_terms +byte_offset +cindent 
-clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+cryptv -cscope +cursorshape +dialog_con_gui +diff +digraphs -dnd -ebcdic 
+emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path +find_in_path 
+folding -footer +fork() -gettext -hangul_input +iconv +insert_expand +jumplist
 +keymap +kaoriya +langmap +libcall +linebreak +lispindent +listcmds +localmap 
+menu +migemo +mksession +modify_fname +mouse -mouseshape +mouse_dec -mouse_gpm
 -mouse_jsbterm +mouse_netterm +mouse_xterm +multi_byte +multi_lang -mzscheme 
-netbeans_intg -osfiletype +path_extra -perl +postscript +printer -profile 
-python +quickfix +reltime +rightleft -ruby +scrollbind +signs +smartindent 
-sniff -spidermonkey +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"
  system gvimrc file: "$VIM/gvimrc"
    user gvimrc file: "$HOME/.gvimrc"
    system menu file: "$VIMRUNTIME/menu.vim"
  fall-back for $VIM: "/Applications/Vim.app/Contents/Resources/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MAC -fno-common -fpascal-strings -Wall -Wno-unknown-pragmas -mdynamic-no-pic -pipe -I. -Iproto -DMACOS_X_UNIX -no-cpp-precomp -I/Developer/Headers/FlatCarbon  -g -O         
Linking: gcc   -L/usr/local/lib -o Vim -framework Carbon      -lncurses  -liconv -lmigemo

kaoriya も migemo も + になっています。あとは主に Terminal で Vim を利用するので、vim-7.0 ディレクトリを /usr/local/bin/ において、.bashrc (.bash_profile)

alias vim='/usr/local/bin/vim-7.0/src/Vim'
alias vi='/usr/local/bin/vim-7.0/src/Vim'

という風にエイリアスを設定しています。また、Subversion で svn commit する時などにも、この Vim7 が利用されるよう、同じく ~/.bashrc (.bash_profile) にエディタの設定を追加しておきます。

EDITOR=/usr/local/bin/vim-7.0/src/Vim
export EDITOR

もちろん Vim.app (gvim) も vim-7.0/src/Vim.app にあります。アプリケーションフォルダなどに移動して、インストールは完了です。

今回まとめた方法だと、元々インストールされている version 6.2 は残っています。エイリアスは設定してあるので、このままでも問題ないのですが、できればアップグレードというカタチにしたいです (/usr/bin/vim を vim7 にしたい)。あと、Vim.app (gvim) は Universal Binary でコンパイルしたい。という課題もあるので、まだまだ勉強と挑戦は続きそうです。

2 Comments

yamato2006年10月17日 15:13

vim激しく便利ですよね。
ところで、/usr/local/binじゃなく/usr/bin/vimを上書きしたいとのことですが、OSXのアップグレードで更に上書きされる可能性があるんで、上記の設定でつかってるのがベストじゃないかな、と思ったりします。yumみたいに対象外パッケージを指定できればいいのかもしれませんが、それやってるとマシン買い替えなんかしたときに環境の再構築するのがめんどくせーってなりますからね(上記なら.vimrcと、.bashrc移せばあとはインストールするだけだし、~/配下で設定が終るっていうのは美しいとおもいます、はい)。

というか、vim7.0でRailsの補完機能を使おうとおもってたらここに見付けました(笑)。
有用な記事をありがとー。

ちくくん2006年10月29日 23:02

vim7のコンパイルを久々にやってたりします。
で、このページを参考にしながら、make&installしたのですが、macでのインライン入力って対応しています?なんか、日本語のインライン入力は出来ないんですが。。。
vim7のkaoriyaパッチにmacのインライン用のpatchが入ってなさそうな気もしたので、とりあえず、一旦確認だけさせて頂ければと思って書き込みさせてもらいました。