This page has been renovated on 08-Aug-2006
Vimスクリプトって便利だね☆
エディタVimには独自のスクリプト言語が備わっています。 これを使いこなすといろいろなことができます。 漢字コードを変換したり、Vimから辞書をひいたり、 さらに文章の自動整形をしたりもできます。 そんなVimスクリプトの便利さを少しでも伝えることができれば…
文章の自動整形を行なうformat.vim (作:西岡拓洋さん) の使い方を解説することで、 Vimスクリプトの可能性を知ってもらえればと思います。

New!! Vim6に合わせて修正 New!!
インデント他について修正&追記
format.vimの機能概説 上の階層へ

formatの実行例
format前 tw=30でformat
format.vimは日本語の文章(英文混じり可)を、
ある一定の幅で
自動的に折り返す機能を持っている。
これを整形(format)と呼ぶ。
format.vimは日本語の文章(英文
混じり可)を、ある一定の幅で自
動的に折り返す機能を持ってい
る。これを整形(format)と呼ぶ。
format.vimは日本語の文章(英文混じり可)を、 ある一定の幅で折り返す機能を提供する。 これを整形(format)と呼ぶ。 もともとvimには英文のformat機能は備わっているが、 日本語文章には対応していない。 format.vimはそれを補うものである。 一定の幅というのは textwidth (tw)に 指定した幅+αとなる。 twが指定されない場合、76文字となる。
実際にフォーマットを行なうと、twで指定した幅を超えて折り返されることがある。 行頭禁止文字を行末にもってくる(ぶら下げる)ときに起こる現象である。 先の+αはぶら下げ許可幅となる。 これは変数format_allow_over_tw によって任意に指定可能である。
format対象となる行がtwの幅に足りない時は 次行とJoin(連結)される。 Jするときに、 スペースが挿入される時とされない時がある。 このスペース挿入ルールは3つあるが、 どれも連結する行末と行頭を調べることで決定している。 ルールの詳細は次の通り:
  1. 両方がマルチバイト文字(いわゆる全角文字)ならばスペースは挿入しない
  2. どちらか片方がマルチバイト文字ならばスペースは挿入しない
  3. デフォルト(基本的に挿入する)と同じ動作
ルールは変数format_join_spacesによって、 選択することができる。
formatを使うための設定 上の階層へ

format.vimを使うためには幾つか手順が必要になる。 大まかに言って次の3ステップ。
  1. format.vimのインストール(香り屋で配布しているvimはインストール済み)
  2. 上述の変数設定(好みに応じて)
  3. 整形したい領域をVisual modeで選択してgq
村岡の_vimrc例(抜粋)
let format_join_spaces = 2
let format_allow_over_tw = 0
起動するたびに、毎回format.vimのオプションを設定し直しても構わないが、 左のように_vimrcに記述してしまうと面倒でなくて便利。 各変数の設定の仕方は例にみられるとおりで、値は村岡の好み。

19-Jan-2002修正
応用編 上の階層へ

format.vimは本当はスゴク高機能で素晴らしい。 その素晴らしさを少しずつ、紹介して行きたい。 但し、実際に使ってみて実感するのがformat.vimを理解する近道だろう。 本当はこのほかにも幾つも機能があるが、 説明できるほど使いこなしていない。 ただ、知らないうちに恩恵にあずかっているかもしれない。
その他 上の階層へ

歴史&謝辞
そもそも最初にformat.vimのプロトタイプ(jfold.vim)を作ったのは、 「ほらこんなこともできるんだぜ」ということの証明という気持ちがあった。 加えて、ちょうど一部のマニュアルの和訳をした際に、 整形に非常に苦労したということも重なっている。 最初の版から、Vim本体を拡張してしまったインチキ版を経由して、 WinでもUNIXでも動く面白いアルゴリズム(Vimのカーソルを使用する)を提案した。 ここまでが村岡の仕事の総てである。

提案したものは非常に限定された機能しか持ち合わせていなかったが、 それを基に西岡拓洋さんが 改良を進めてくれたおかげで、現在の素晴らしいformat.vimが誕生した。 Vim本来のgqとの置き換え、 段落・コメント・インデントへの対応、 連結方法の多様化、その他諸々の日常において非常に役立つ機能は全て、 西岡さんの手によるものである。 村岡も多用させていただいている機能である。 西岡さんには、この場を借りて感謝したい。

Vim6への移行にあたりformat.vimにも随分と手を入れた。 それにともないインストール方法が以前と変わっている。 19-Jan-2002追記
format.vimの入手
Vim6用format.vimは gvim日本語版の中に同梱されている。 UNIXなどの人はダウンロードしてアーカイブ内のruntime/plugin/format.vimを抽出して欲しい。 オリジナルのformat.vimは http://www.win.ne.jp/~takuhiro/scripts/format.vim から手に入る。 しかしVim6では動かない可能性がある。 19-Jan-2002修正
終りに
この文章と内容について、質問・コメントがある場合は気軽にどうぞ。
Since 1st April, 1997
KaoriYa middle logo
生きる事への強い意思が同時に、自分と異なる生命をも尊ぶ心となる
Copyright (C) 2000 KoRoN (Taro Muraoka)