CentOS5 のvimでRubyのオムニ補完を使う


オムニ補完は↑のような補完機能。RubyRails開発で使えます。
http://vim-ruby.rubyforge.org/を突っ込めば使えますが、CentOS環境のvimはrubyinterpが無効になっているのでパッケージを入れ直す必要があります。手順は以下。
1. vimrpmパッケージを作る/入れ直す
2. vim/rubyを導入
3. vimの設定
vimでrubyinterpが有効かは:versionコマンドで確認できます。(+rubyで有効)

vimrpmを作る

srpmからrpmファイルを作ります。まずは必要なパッケージを導入。

% sudo yum grouplist
% sudo yum groupinstall "Development Tools"
% sudo yum groupinstall "Development Libraries"
% sudo yum install rpm-build
% sudo yum install yum-utils
% sudo yum install gcc python-devel libtermcap-devel libacl-devel gpm-devel autoconf libselinux-devel gtk2-devel libSM-devel libXt-devel libXpm-devel
% sudo yum install ruby ruby-devel

SRPMを取得するために、/etc/yum.repos.d/CentOS-Source.repo を作成します。内容は以下。

# CentOS-Source.repo

[base-source]
name=CentOS-$releasever - Base Source
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/os/SRPMS/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#released updates
[updates-source]
name=CentOS-$releasever - Updates Source
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/updates/SRPMS/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#packages used/produced in the build but not released
[addons-source]
name=CentOS-$releasever - Addons Source
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/addons/SRPMS/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#additional packages that may be useful
[extras-source]
name=CentOS-$releasever - Extras Source
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/extras/SRPMS/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#additional packages that extend functionality of existing packages
[centosplus-source]
name=CentOS-$releasever - Plus Source
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/centosplus/SRPMS/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

#contrib - packages by Centos Users
[contrib-source]
name=CentOS-$releasever - Contrib Source
baseurl=http://ftp.riken.jp/Linux/centos/$releasever/contrib/SRPMS/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

CentOS-Base.repoを書き換えたものです。
ビルド用のディレクトリを作成します。

% mkdir -p ~/rpm/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
% echo "%_topdir $HOME/rpm" >> ~/.rpmmacros

srpmを取得して展開します。

% yumdownloader --enablerepo=base-source --source vim
% rpm -ivh vim-7.0.109-3.el5.3.src.rpm
% rm -f rpm -ivh vim-7.0.109-3.el5.3.src.rpm

~/rpm/SPECS/vim.specを修正します。

(略)

export CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2"
export CXXFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2"

%configure --with-features=huge --enable-pythoninterp --enable-perlinterp \
  --disable-tclinterp --with-x=yes \
  --enable-xim --enable-multibyte \
  --enable-gtk2-check --enable-gui=gtk2 \
  --with-compiledby="<bugzilla@redhat.com>" --enable-cscope \
  --with-modified-by="<bugzilla@redhat.com>" \
  --enable-rubyinterp \ # 追加
%if "%{withnetbeans}" == "1"
  --enable-netbeans \
%else
  --disable-netbeans \
%endif

make
cp vim gvim
make clean

%configure --prefix=/usr --with-features=huge --enable-pythoninterp \
 --enable-perlinterp --disable-tclinterp --with-x=no \
 --enable-gui=no --exec-prefix=/usr --enable-multibyte \
 --enable-cscope --with-modified-by="<bugzilla@redhat.com>" \
 --with-compiledby="<bugzilla@redhat.com>" \
 --enable-rubyinterp \ # 追加
%if "%{withnetbeans}" == "1"
  --enable-netbeans \
%else
  --disable-netbeans \
%endif

(略)

%changelog
# 追加↓
* Mon Jun 02 2008 hayori <hayori02@gmail.com> 7.0.109-3.3ruby
- enable-rubyinterp

(略)

ビルドします。

% rpmbuild -ba --target i686 --define 'dist .el5' ~/rpm/SPECS/vim.spec

以上でrpmファイルが作成されるはず。
~/rpm/RPMS/i686 に作成されたrpmの中から必要な物をインストールします。

% sudo rpm -Uvh --force vim-common-7.0.109-3.el5.3.i686.rpm vim-minimal-7.0.109-3.el5.3.i686.rpm vim-enhanced-7.0.109-3.el5.3.i686.rpm

vim/rubyを導入

RubyGemsで入るので簡単。

% sudo gem install vim-ruby

以下のコマンドが有効になるので実行します。全ユーザに適用するか自分オンリーにするかなど聞かれるかもですが適当に。

% vim-ruby-install.rb

vimの設定

~/.vimrc に以下を追加します。

set nocompatible
syntax on
filetype on
filetype indent on
filetype plugin on
let g:rubycomplete_buffer_loading = 1
let g:rubycomplete_classes_in_global = 1
let g:rubycomplete_rails = 1

これで Ctr-x Ctr-o で補完されます。キーバインドは以下のように変更できます。

" Ctrl-o で補完
imap <C-o> <C-x><C-o>