パスワードを忘れた? アカウント作成
726116 journal

nekoieの日記: vim-6.0 de 無駄bone。 4

日記 by nekoie

現在メインに使っているエディタは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コマンドに割り当て。非常に便利になった。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • --enable-ximがconfigureに足らないような。

    以下、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
  • .vimrcを home directoryに置いておかないと
    vi互換モードになります。
    置いてあればundoもちゃんと機能します
    んで、そこに
    syntax enable
    と書けばカラーモードになります。

    それでもモノクロなら
    環境変数TERMを xtermとかにすると
    色がつくかもしれないです
    • どうもありがとうございます。これで非常に便利になりました。.vimrc。

      手元のマシンでは、TERM=xtermではカラーにならず(boldで強調表示されている)、TERM=ktermでカラーになりました。この辺の設定はtermcapなのかな?

      # 日記の方は修正したけど、こっちの方ではタイトルが「無駄born」になっていて、みっともない‥‥。
      親コメント
typodupeerror

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

読み込み中...