CentOS 5.5 に Vim 7.2 をインストール

CentOS の最新版となるリリース 5.5 が出ていたのでインストールしてみた。インストール自体はさくっと終了した(この辺参照。)のだが、Vim のバージョンが古いせいか、愛しの FuzzyFinder プラグインが使えない!

$ vim
/home/delphinus/.vim/plugin/fuf.vim の処理中にエラーが検出されました:
行   11:
FuzzyFinder does not support this version of vim (700).
続けるにはENTERを押すかコマンドを入力してください

しょうがないので最新版をソースからもってきてインストールしてみた。これには以下のサイトが非常に参考になった。

オデの日記@WEB系: vimインストールで’os_unix.c:45:30 error: selinux/selinux.h: No such file or directory’というエラーが出る
http://koexuka.blogspot.com/2009/05/vimosunixc4540-error-selinuxselinuxh-no.html

Continue reading

【Vim】CSS内で色付けするシンタックスファイル

2010-04-08_194637.png

VimでCSSを編集するときは必ず入れておきたいスクリプト。これを入れておくと色指定文字列を実際の色で表示してくれるので非常に便利。

css color preview – the script made changes from the css.vim combined with css color preview : vim online

http://www.vim.org/scripts/script.php?script_id=2539

2010-04-08_194649.png

ダウンロードしたファイルcss.vim~/.vim/syntax(Windowsなら$HOME/vimfiles/syntax)にコピーすればインストール完了だ。

冒頭に挙げたSSはGVimをWindowsで動かしたものだが、256色対応ターミナルでもそれなりの色で表示してくれる。右はPutty + Vimで表示した例。

【GVim】Proggy + Osakaで快適コーディング

vim_guifontwide.png

Windows版のGVimでフォントを指定するときは「guifont」「guifontwide」の二種類を指定する必要がある……というのを今日初めて知った。前者は半角、後者は全角のフォントを指定する。今までは前者しか指定してなかったので、全角文字についてはレジストリをいじってFontLinkを使うことで対処していた。

Windows 2000/XPのFont Link機能(Font Linking)の紹介
http://blue.ribbon.to/~akene/fontlink.htm

これでも機能的には十分なのだが、変更するのにレジストリエディタを起動するのは億劫だし、OSを再起動しないと有効にならないのが困りもの。でも、わざわざこんな苦労することなかったのだ。

Gvim on Windows: フォント設定: まじかんと雑記
http://magicant.txt-nifty.com/main/2009/03/gvim-on-windows.html

ここに詳細に書かれているのだが、指定すべきオプションは3つある。

Continue reading

VimでPerldocを引く(Unix系OS編)

100213-0001.png

Perlでごりごり書いてるときに、モジュールのドキュメントが読みたくなることはよくある。GNU Screen + Vimでやってるときは別のウィンドウで「perldoc モジュール名」でもいいのだが、GVimではそういうわけにも行かない。

そんなときに便利なのが次のプラグイン。

PERLDOC2 – Perldoc with sytnax highlighting in vim : vim online
http://www.vim.org/scripts/script.php?script_id=2171

インストールは以下の手順で行う。

  1. CPANからPod::Simple::Vimモジュールをインストール1
  2. ダウンロードしたzipファイルの中身を~/.vimに解凍する
  3. .vimrcに次のような記述を追加
" Perldoc表示用
let g:Perldoc_path=expand("$HOME")."/.vim/perldoc_cache/"

expand以下がキャッシュディレクトリだ。ディレクトリ作成したりするのが面倒なら、単に「expand("$TEMP")."/"」とだけ指定しておけばいいかもしれない。使用法はコマンドモードで

:Perldoc モジュール名

とするとドキュメントが引ける。これだけでも十分読みやすいのだが、いくつか不満点があるので改良した。

Continue reading

【Vim】指定されたPerlモジュールのソースファイルを開く

Perlモジュール名を指定するとそのソース(.pmファイル)を開いてくれるコマンド。已にどっかにありそうな機能ではあるが、勉強のために作ってみた。

使い方

openPM.vimをpluginディレクトリ(Unix系なら~/.vim/plugins、Windowsなら$HOME/vimfiles/plguin)に、searchPM(WindowsはsearchPM.bat)をパスの通ったディレクトリに置き、実行権限を与える。そしてVimを起動し、

:OpenPM モジュール名

で、.pmファイルが開く。モジュール名が指定されなかった場合は、カーソル下にある文字列を認識して開く。

使用例

こんなファイルでカーソルをここにおいて、

100211-0001.png
:O<Enter>」とすると、モジュールのソースが開く。

100211-0002.png

Continue reading

Vimの正規表現 “\v”, “\zs”, “\ze”

Vimの小ネタ。

Vimで正規表現を使うとき、Perlなんかと比べると制御文字を書くときにバックスラッシュを多用するため見にくく感じていた。たとえば、

「abc」と「def」に挟まれた文字列

を表す正規表現というと、Perlなら

/(?<=abc).+(?=def)/

で済むところ、Vimだと

\(abc\)\@<=.\+\(def\)\@=

となるのでめんどくせえ〜とか思ってたわけだ。

とんでもない間違いでした。

便利な制御文字があったんだね。こんなときに使うのが「\v」。これを使うと英数字以外が全て制御文字と見なされるので、表記が格段にシンプルになる。同じ例だと、

\v(abc)@<=.+(def)@=

こちらが圧倒的に見易い。ちゃんとヘルプ読まないとダメだねorz

そしてさらに便利なのが「\zs」と「\ze」。これは正規表現の「始まり」と「終わり」を表す。同じ例を表すと、

abc\zs.\+\zedef

ちょっと見にくいかもしれないけど意味は同じだ。これを使えばPerlの正規表現では対応していない、「可変長の後読み」を実現できる。例えば、

<p>Hello!</p>
<script>alert( "Hello!" )</script>
<script type="javascript">alert( "Hello!" )</script>

このHTMLから<script>タグの中身だけを取ろうとして、

/(?<=<script.*>).+(?=<\/script>)/

とやってもうまく行かない。

$ perl -e '/(?<=<script.*>).+(?=<\/script>)/'
Variable length lookbehind not implemented in regex m/(?<=<script.*>).+(?=</script>)/ at -e line 1.

「可変長の後読みは未実装です」エラーになってしまう。しかしVimだと楽ちん。

<script.*>\zs.\+\ze<\/script>

100205-0002.png

これを知って検索・置換がずいぶん早くなった。