nekoieの日記: vim-6.0 de 無駄bone。 4
現在メインに使っているエディタはjvim3.0。
しかし、j無しのvimでも充分に日本語が通りそうなので、効率アップを期待しつつvim6.0を構築する事に。
前回uboawareパッケージ作成に使ったvimのアーカイヴ類が残っているので、それを再利用。新しく出ているパッチも補給しておく。
しかし、まずその前に、今まで使っていたjvimを残しておく事に。
# cp /usr/bin/vim /usr/bin/jvim
構築開始。
$ mkdir vim
$ cd vim
$ tar xvfy ~/lfs-done-src/vim-6.0.tar.bz2
$ tar xvfz ~/lfs-done-src/vim-6.0-extra.tar.gz
$ tar xvfz ~/lfs-done-src/vim-6.0-lang.tar.gz
$ tar xvfz ~/lfs-done-src/vim-6.0-patch-204.tar.gz
vim-6.0-patch-204.tar.gzとは、前回拾い集めたパッチ001~204とその他。コレを伸長する事で、vim-6.0-patch-204というディレクトリが生成された。
新しいパッチは241まで出ているようなので、その分を補給。
$ perl -e 'for (205..241) { printf("http://ftp.at.vim.org/pub/vim/patches/6.0.%03d\n", $_); }' > patch_url
$ cd vim-6.0-patch-204
$ wget -i ../patch_url
最後の241番は最新過ぎてこのサーバにはまだ存在しないのか、ダウンロードに失敗しているようなので除外。ChangeLogによると、ゲイツOS上での不具合修正らしいので問題は無し。
$ cd ..
$ mv vim-6.0-patch-204 vim-6.0-patch-240
$ cd vim60
$ patch -p0 < ../vim-6.0-patch-240/6.0.001
$ cat ../vim-6.0-patch-240/vim-6.0-sh.vim > ./runtime/syntax/sh.vim
前回作成したパッチ当てスクリプトを、改良したものを作成。今回は全自動。
$ vi p.pl
#!/usr/local/bin/perl
# usage ./p.pl start-patchlevel-number
$patchLevelStart = $ARGV[0] || 2; # 1はパッチ済
$patchLevelEnd = 240;
if ($patchLevelStart =~ /\D/) { die("uboah! argv should be number!"); }
for ($i = $patchLevelStart; $i <= $patchLevelEnd; $i++)
{
$patchFile = sprintf("6.0.%03d", $i);
print "\npatching $patchFile ...\n";
$_ = system("patch -p0 < ../vim-6.0-patch-240/$patchFile");
if ($_) { die("uboah! patching error!"); }
}
print "all done!\n";
$ perl -wc p.pl
$ chmod u+x p.pl
$ ./p.pl
パッチ当て終了。構築。
$ ./configure --help
X関連をオンにすべきか迷う。
mltermを通してvimを使った方が、とりあえずアンチエイリアスが利いて綺麗に見えると思う。が、gui的な機能は当然使えない。
個人的にはgui的な機能が使えなくても困らないが、マウスが使えると便利な気がしないでもない。
試してみる事にする(運悪くX無しでは使えないようになってしまうと嫌だが)。
$ CFLAGS="-O2 -march=i686" CXXFLAGS="-O2 -march=i686" ./configure --prefix=/usr --enable-perlinterp --enable-pythoninterp --enable-rubyinterp --enable-cscope --enable-sniff --enable-multibyte --with-x --enable-gui
$ make
$ su
# make install
# ldconfig -v
試す。
$ vi
動く。しかし、ソースが色付きになったりはしない。あとで設定を調べる事。
また、jvimでは何度もuを押す事で、かなりの回数までundoが可能だったが、vim6.0では基本的なviコマンド通りの動作なので、複数回undoのやり方が分からない。設定を変更すれば、jvimのような動作になるのだろうか。
$ gvim
動く。しかし、日本語が明らかに化けている。適当にフォントの設定をしてみるものの、どうにも上手く行かない。
ううむ。
# cd /usr/bin
# rm vi
# ln -s jvim vi
これでは、折角構築した意味が無い‥‥。
(追記:下のコメントのところで、asataku氏とsatsuki氏に教えていただきました。以下は、その続き。)
gvimを使うなら、日本語入力にinput methodを使うので、--enable-ximが必要だと言う事をasataku氏にそれとなく教わる。が、とりあえず自分としてはgvimよりも素のvimの方が良いので、このままで行く方針に。
asataku氏とsatsuki氏に、ステキ動作の鍵は.vimrcにあるという事を教わる。
$ vim .vimrc
syntax enable
set nocompatible " Use Vim defaults (much better!)
" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running") || &term == "xterm" || &term == "kterm"
syntax on
set hlsearch
endif
set fencs=iso-2022-jp,utf-8,utf-16,ucs-2-internal,ucs-2,cp932,shift-jis,japan,euc-jp
set fencs+=,euc-jp,japan,shift-jis
if has('win32')
" for sjis platform
set fencs+=,euc-jp,japan,shift-jis
else
" for eucJP platform
set fencs+=,cp932,shift-jis,japan,euc-jp
endif
syntaxの定義が二回あるのは、カラー表示が使用不可でも強調表示で使いたいので、ifの外に置いている。ifの中にもsyntax定義を残しているのは、コメント内容との整合性をとってるので。あとで一部分だけコピーしても問題の無いように。
ううむ。最高に使いやすくなった。
と、いう訳で、
# cd /usr/bin
# rm vi
# ln -s vim vi
と、viコマンドに割り当て。非常に便利になった。
適切に~/.vimrcを設定すれば大丈夫 (スコア:1)
以下、vimrcのサンプル。
複数回Undoなど
set nocompatible " Use Vim defaults (much better!)
シンタックスハイライト
" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running") || &term == "xterm" || &term == "kterm"
syntax on
set hlsearch
endif
文字コードの認識。順番は変更の余地ありかも。
set fencs=iso-2022-jp,utf-8,utf-16,ucs-2-internal,ucs-2,cp932,shift-jis,japan,euc-jp
set fencs+=,euc-jp,japan,shift-jis
if has('win32')
" for sjis platform
set fencs+=,euc-jp,japan,shift-jis
else
" for eucJP platform
set fencs+=,cp932,shift-jis,japan,euc-jp
endif
-- Che Che - Bye Bye
Re:適切に~/.vimrcを設定すれば大丈夫 (スコア:1)
わ、どうもありがとうございます!
おかげでものすごく使いやすくなりました。嬉しい。
gvimは使いそうに無いので、とりあえず手元のvimは--enable-xim無しで行く事にします。
設定ファイルの (スコア:1)
vi互換モードになります。
置いてあればundoもちゃんと機能します
んで、そこに
syntax enable
と書けばカラーモードになります。
それでもモノクロなら
環境変数TERMを xtermとかにすると
色がつくかもしれないです
Re:設定ファイルの (スコア:1)
どうもありがとうございます。これで非常に便利になりました。.vimrc。
手元のマシンでは、TERM=xtermではカラーにならず(boldで強調表示されている)、TERM=ktermでカラーになりました。この辺の設定はtermcapなのかな?