« 2011年2月 | トップページ | 2011年4月 »

2011年3月

2011年3月31日 (木)

バックアップソフトのsyncbackを使う

バックアップソフトのsyncbackを使う

Time-stamp: "Tue Dec 07 18:02:39 JST 2010"

syncbackのよいところはソースディレクトリとデスティネーションディレク トリをスキャンしてどのようにバックアップすることになるかの一覧表を実 際のバックアップ作業の前に表示してくれることである。その時点ではバッ クアップとかシンクロナイズ処理は行なわれない。この段階では処理のシ ミュレーションをするだけといえる。その一覧表を確認して、必要があれば 処理しないファイルを外すなどしてから実際のバックアップ処理に進むこと になる。スキャンするだけで実際の処理はしないで済ますこともできる。

たいていのバックアップソフトは、実行ボタンを押したら設定どおりの処理 をして作業結果をログファイルに書き出して終わるタイプのものが多い。ロ グファイルを見た時点では処理が終っているので後戻りできない。

syncbackは次の通りの処理を実行(run)することになりますが、それでよろ しいですかと実際のバックアップ処理をするまえに作業内容を提示して承諾 を求めてくる。シミュレーションのみ(simulated run)で始めることもでき る。シミュレーション後にバックアップ実行に移行することもできる。どち らにしても関係する全ファイルの一覧が表示される。ファイル多数のときは ページ分けされる。スクロールボタンとページのアップダウンボタンを併用 しての確認作業となる。

バックアップ元とバックアップ先のディレクトリ・ファイル情報を収集する ことによって決まる作業計画と実際のバックアップ作業の間へ人間による承 認を挟み込む。現状ファイルのスキャンに結構と時間が掛かる。バックアッ プ自体は速く済むように感じられる。

先ずプロファイル(プロフィール、profile)と呼ばれるバックアップのパ ターンを登録する。どのディレクトリから外部メディアのどのディレクトリ という具合に設定する。バックアップとシンクロナイズにそれぞれ3つずつ のシンプル設定が用意されている。バックアップ元とバックアップ先のディ レクトリ名を指定して6通りのシンプル設定から一つを選ぶだけでよい。

バックアップソフトの起動画面はどれもシンプルである。バックアップ元と バックアップ先のディレクトリ及びバックアップ方法の詳細を設定したプロ ファイルの名前が画面に表示される。それ以外はプロファイルの作成や変更 するためのボタンがあるくらいである。プロファイルを選択して作業開始の ボタンを押すだけである。見掛けはまことにシンプルである。

悩むのは最初にプロファイルを作成するときである。バックアップ元はとも かくとしてバックアップ先を適当・適切に決める。そう言われると却って考 えこむ人がいるかもしれない。バックアップ先を決めるだけでも迷うという のにその他にもいっぱい決めるべきことがある。

あるディレクトリに含まれる全ファイルを別の場所にバックアップすると き、そのディレクトリにサブディレクトリがあったらそれを含めるのかどう かがある。バックアップ元の全ファイルをバックアップ先にコピーするのは 当然であろう。その際にバックアップ先にあるファイルがバックアップ元か ら消えていたらどうするかもある。例えば、二つのファイルを整理して一つ にまとめると一方は消えてしまう。バックアップ先には統合して一つにまと めたファイルのうちの廃止した一方が残っている。

ディレクトリに含まれるファイルのうち特定の種類だけ、例えばテキスト ファイルだけをバックアップしたいという要望があるかもしれない。こうい う細々した設定がズラズラ並んでいるのを見るとうろたえる。設定を間違 えるとファイルを失うかもしれないとおどかされて思わずあとずさりする。

syncbackのプロファイル作成の最初は次の三つから一つを選ぶ。

  1. Backup: for copying files to another directory, drive, FTPserver, etc.
  2. Synchronisation: for keeping the contents of two directories identical
  3. Group: contains links to other profiles

三つめは複数のプロファイルをまとめて同時実行するためのもので、最初は backupまたはsynchronisationのどちらかしかない。どちらかにチェックを入 れてokする。プロファイルの名前を入力するとバックアップ元とバックアッ プ先のディレクトリおよびバックアップ方法を選ぶダイアログになる。

ダイアログの最前面に表示されるシンプル設定タブには次の7通りがある。

  1. Backup the source directories files, but not any of its sub-directories (サブディレクトリを除く)
  2. Backup the source diredtories files, including all its sub-directories (全てのサブディレクトリを含む)
  3. Backup the source directories files,including selected sub-directories (選択したサブディレクトリを含む)
  4. Synchronise the source directories files with the destination directory
  5. Synchronise the source directories files and sub-directories with the destination directory
  6. Synchronise the source directories files and selected sub-directories with the destination directory
  7. Custom

プロファイル作成当初にbackupを選んでいると上記(2)を選択した状態にな り、synchronisationを選んだなら上記(5)にチェックが入っている。それら がそれぞれの最も無難な選択ということだろう。この段階でbackupと synchronisation等の7種のうちのどれにでも設定換えできる。その他の詳細 設定タブについては触らないことにする。おそらく一番無難な設定になって いる。使ってゆくなかで必要に応じて少しずつ変えてゆくのでよいと思う。

syncbackは、とりあえず簡単シンプル設定で使い始めることができるという 敷居の低さがよい。細かい設定は必要になったときに考えようである。多く のバックアップソフトは必須な設定と細かな詳細設定が平板的に羅列されて いる。デフォルトでは無難な設定となるように予めセットしてあるだろう が、そのままでよいのかなの不安を感じる。

syncbackのプロファイルは階層式で最上階にある六つ(七つめのcustomは何 なのかが分からない)のうちどれか一つを選ぶだけで後はとりあえずソフト にお任せとする。必要なら口を差し挟むこともできますよというスタンスで ある。

もっとも注意すべきはsyncbackのリストアボタンに触ってはいけないことだ ろう。これはバックアップ元が破壊されているときにしか用がない。健全な バックアップ元を壊すチョー危険ボタンになる。

インストーラによる。ノーインストールバージョンも用意されている (international downloadsというリンクにある)。windows meで動く。メ ニューが文字化けする。windows meが不味いのかもしれない。日本語版は使 えないので英語版を入れ直す。

window meのパソコンに英語版をインストールしたらスタートメニューに現 われる一番下の日本語(メーリングリストの文字)が文字化けする。utf-8で あるための文字化けのようである。windows 2000以降なら文字化けしないの かもしれない。なお、スキャン後の処理ファイル名の一覧表において日本語 ファイル名は(英語版インストールの場合も)正しく表示される。

繝。繝シ繝ェ繝ウ繧ー繝サ繝ェ繧ケ繝・lnk
メーリング・リスト.lnk

sota氏のbackupより仕事は速いようである。バックアップソフトとして最初 に使ったのはbackupだった。backupでバックアップを開始すると処理してい るディレクトリツリーが下から上へと流れる(スクロールする)が突然ピタリ と止まることがある。サイズの大きいファイルを処理しているためだろう か。不安になって中止したら読めないディレクトリが出来たりした。

関係するファイル数が多くてしかも初めてのバックアップだったら(バック アップ先が白紙状態)相当に時間が掛かるものだと分かってからは気長に待 つようになる。freeware版のsyncbackにはバックアップ作業の進捗状況を表 す棒グラフが表示されない。終わるまで待つしかない。

あれやこれやで色々と試すうちに何時の間にかbackupからsyncbackに乗り換 えていた。syncbackのほうが初めからゴチャゴチャと決めなくてよいので気 楽である。

syncbackにはシェアウェアの高機能版も用意されている。私はfreeware版を 使っている。

``SyncBack is our freeware program that helps you easily backup and synchronize your files to: the same drive; a different drive or medium (CDRW, CompactFlash, etc); an FTP server; a Network; or a Zip archive.''

international downloadsというリンクからinstall versionの他にno install versionもダウンロードできる。 freewareにもかかわらず106ページもあるヘルプファイルがある。

次のページに詳しい使い方解説がある。これを参考にして英語版を使うのが よさそうである。シンプル設定以外を使うときは日本語解説が欠かせない。

開発元の2BrightSparks Pte Ltdはシンガポール(Singapore)にあるらしい。

| | コメント (0) | トラックバック (0)

2011年3月14日 (月)

skk.vimとformat.vimの相性問題(matching)

vimの挿入モードでミニバッファの「挿入(insert)」が消えないようにしたい

Time-stamp: "Fri Nov 19 11:46:42 JST 2010"

vimがインサートモードにあるかコマンドモードにあるかはカーソルの形が 文字間の縦棒になるか文字を塗り潰す豆腐形になるかの違いで見分けられ る。それよりは明確なインジケーターとしてインサートモードならばミニ バッファに「挿入」の文字が表示されるというのがある。コマンドモードに おいてはミニバッファにコマンドを表示することがあるので何も表示されな いのが普通である。

vimに慣れて毎日使うようになっていても、間違えてコマンドモードに居る のに文字入力しようとして、予期せぬパソコンの反応(括弧の入力でカーソ ルがとんでもないところにジャンプしたりする)にハッとすることが多い。 コマンドモードではキーボードの文字キーのすべてに文字入力にはならない 編集コマンドが割り付けられている。

vimのコマンドモードでどれかの文字キーを押してみるとよい。カーソルの 形状が文字塗りつぶしの豆腐型から文字間の縦棒に変わる(a,i)とか文字塗 り潰しの高さが半分になる(d)、あるいはカーソルがアンダーラインになっ たりもする(r)。単にカーソルが上下左右(h,j,k,l)に動くだけもある。

見掛け上何の反応もないキーがあるかもしれない。はっきりしていることは キートップに刻まれている文字が編集画面に挿入されないことである。つま るところ、どのキーも編集コマンドになる。

編集コマンドが文字キーのワンキーであることの便利が、二つのモードを持 つというvim初心者が乗り越えるには勇気が要るとても高い壁の向う側にあ る。なぜ、vimのコマンドモードが便利かというと編集コマンドの入力がワ ンキーで済むこと、コマンドの働きを暗示する英単語の頭文字のキーになっ ていて憶えやすいことがある。 たとえばaはappend、iはinsert、dなら delete、rならreplaceという具合になる。

カーソルを上下左右方向に一個だけ動かすh,j,k,lはQWERTY配列キーボード の右手ホームポジションを基準にして使いやすいように割り当てたものであ り、その機能を表す英単語の頭文字由来ではないので指先に憶えてもらうこ とになる。

なお、編集メニューが目の前にあるキーのそれぞれに割り当てているから、 キーボード自体がメニュー一覧になっている便利もある。ときおりキーボー ドを眺めて、それぞれの文字キーに、どんな編集コマンドが割り付けられて いるかを思い起こすとよい。

vimにはワンキーの編集コマンドの他にesc, meta, alt, ctrl, shiftなどの 単独では機能が割り当てられない修飾キー(モディファイア・キー、 modifier key)と他の文字キーを組み合わせるコマンドもある。それらは「: help index」のヘルプで表示されるdoc/index.txtで一覧することができ る。

文字を入力するインサートモードと編集操作のコマンドモードを分けない通 常のエディター(vi以外の(たぶん)すべてがそうである)ではマウスでメ ニューをつつく方法をとるか、修飾キーと文字キーとの組み合わせキーによ る編集コマンドを使う。

ワンキーコマンドとして使える文字キーはアルファベット26文字、数字10 個、記号類32個しかない。エディターの編集コマンドとしては不足する。そ こでvimにおいても組み合わせキーコマンドが数多くある。

文字入力に特化したテキストエディターでも編集コマンドはかなりの数にな る。メニューの第一階層だけでも100個近くもある。それらの中で使用回数 の多いものとなると半分から二、三割に、ひょっとしたら一割くらいまで減 るのではなかろうか。したがってvimのように文字キーだけのワンキーで事 足りる(インサートモードに居るならコマンドモードに復帰するためのエス ケープキーと合わせたツーキーになる)。

たいていのソフトウェア、例えば秀丸エディタとかサクラエディタでは文字 入力以外の編集コマンドはマウスで済ませる。編集画面の最上部にメニュー バーがあり、そこをマウスでつついて文字入力以外のやりたい操作を探す。 マウスを使わないでメニューバーをキーボードから操作できるようになって いるが、ついキーボードより先にマウスへ手が伸びるというのが普通であ る。

windowsで使うmeadow(emacs)やvimにはメニューバーが付いておりマウスで 編集コマンドを選ぶこともできる。しかしこれらのテキストエディターはマ ウスが一般化する以前に開発されたものである。そのためemacsやvimでは一 切の操作をキーボードだけからするように設計されている。カーソル移動の ための矢印キーの付属さえも想定していない。

私がパソコンで最初に使ったのはワープロソフトの一太郎だった。その後に テキストエディターが軽くて使いやすいということを聞きつけて秀丸エディ ターをさわりはじめる。一太郎では、文字入力はキーボード、編集コマンド はマウスですることが身に染み付いていたので秀丸もその流儀の使い方をし ている。

秀丸エディターで文章やプログラムを書くというところまではいってない。 そうなる前にmeadowというエディターに乗り換えてしまった。テキストエ ディターで普通の文章を書くにあたって何よりも不自由なのは一行一定文字 数で折り返してくれないことである。テキストエディターを常用としない人 達もメールソフトを使うときそれを感じるだろう。自分で適切に改行を入れ なければならない。

ワープロソフトは、行末に改行を入れるという方法ではなくてソフトウェア 固有の方法で行の折り返しをする。テキストエディターは他のエディターや ワープロでも理解できる改行文字を入れる行末折り返しをする。

ところでテキストエディターはもともとコンピュータのプログラムを書くた めの道具(ツール)としてある。プログラミングでは一行の一定文字数毎に改 行を入れるという機能は必要ない。場合によってはそのような機能が弊害と なるかもしれない。改行文字を入れたらプログラムが正常に解釈されない場 合もある。

長大なプログラムでは、それを読みやすくするために一つのまとまりのある ブロックであることが一目で分かるようにブロックの開始行と終了行の間に 挟まれる部分を字下げ(インデント)する。プログラムの各行の右端を揃える ことはしないが行頭を下げる整形は普通に行なわれる。人力での整形は面倒 なので、ある程度の自動整形機能がエディターに備わっていることが多い。 プログラム言語毎に書式・仕様があり、それに基いてエディターが処理して くれる。

プログラムの作者はその成果物について仕様書とかマニュアルを作ることが 求められる。その際は普通の文書を書くことになる。そこでは各行の幅を揃 える整形操作が必要になる。

英語なら文書の右端で単語が二分割されないようにする必要がある。書籍な どの印刷物では音節の切れ目にハイフンを入れて単語の後半を次の行に送る ハイフネーション処理をする。そのほうが見栄えがよいからである。一般の 記録や手紙ではそこまでの手間を掛けない。各行の右端の不揃いは大目にみ るのを普通とする。昔の機械式タイプライターによる文書ではたいてい行末 がデコボコしている。手書きでもタイプライターを使っても不揃いは避けら れない。人手によるハイフネーションは無理である。

日本語文は禁則処理の必要がある。促音の「っ」とか拗音の「ゃゅょ」の 小書き文字や閉じ括弧などが行頭に来てはいけないとする行頭禁足と開き括弧 などが行末にならないようにする行末禁足がある。そして出来るかぎり行頭と 行末が揃っていることが望ましい。行頭は言うまでもなく行末も段落内では綺 麗に揃っていないと粗雑な文書と見られてしまう。

ワープロソフトなら文書整形を全自動でやってくれるのが普通である。白紙 状態での入力でもキッチリと右端で折り返してくれるし、行の前半・中間・ 後半のどの部分に加除訂正を加えてもリアルタイムで整形される。テキスト エディターでは最初の白紙入力時には一定文字数で自動的に行末折り返しす る。もし加除訂正で行頭や行末が不揃いになったときは整形コマンドによる 半自動整形を採用しているようである。場合によっては整形しないで欲しい こともあるので全自動にしないのかもしれない。

vimによる日本語の文章書きには難点があるとする人が多い。それは仮名漢 字変換プログラムとの相性問題である。escキーを押してコマンドモードに 復帰したら仮名漢字変換が引っ込んでくれないと困る。例えばaを押しても 赤色アンダーラインのある未確定状態ではやりにくい(enterを押さないとa の入力が確定しない)。

また、コマンドモードでの/や?による検索において日本語を探したいとき仮 名漢字変換が使えないのは困る。日本語中心の入力中にインサートモードか らコマンドモードで何かの編集コマンドを実行する。その後にインサート モードに復帰したらすぐに日本語入力を再開したい。そのためにはインサー トモードにおける仮名漢字変換の入力モード(平仮名入力、全角英字入力、 直接入力など)を憶えていて欲しい。

vimと、windowsで普通に使われる仮名漢字変換プログラムのms-imeとかatok との間には相性問題がある。私が最初に使ったパソコンソフトはワープロソ フトの一太郎だから仮名漢字変換プログラムとしてatokを使うのが自然の成 行きであった。

実はvimを使い始める以前からmeadowを使っている。最初のうちはatokを meadowエディターで使ったのであるがインクリメンタルサーチでこけた。ど うも上手くない。atokをmeadowに合わせることは無理のようなのでmeadowに 適したskkを使うことになる。

skk(simple kana to kanji conversion program)はemacs(windows版が meadow)専用の仮名漢字変換プログラムである。それはmeadowでしか使えな い。ms-imeやatokのようにwindowsで動くワード、エクセル、一太郎などで 共通に使えるというものではない。

とりあえずmeadow用にskkを入れる。グーグル検索でブラウザへのキーワー ド入力には仕方なくatokを使うという二刀流になる。次にvimでatokを使 う。これも使い勝手が悪い。そこでskk.vimを入れる。ブラウザを除いて物 書きはmeadowかvimでのskkになる。日本語入力のほどんどにskkを使うよう になるとブラウザにキーワードとして日本語を打ち込むとき、shiftキーを 押すskkの癖がatokを使う際にも出てしまい鬱陶しい。

ついにwindowsアプリでも使えるskkime98を入れる。skkimeは個人開発で先 行きに不安があるけれども誰かが引き継いでくれると信じたい。meadowと vimですっかりskkに染まってしまった指先にはこれしかない。現在は一日中 skkで日本語入力をこなしている。なお、skkで半角片仮名を入力するには ちょっとした設定が要るらしい。そのときはms-imeやatokに切り換えること でしのいでいる。

meadow(emacs)にはauto-fill-modeがある。一行文字数を、例えば76文字(半 角)に設定しておくとmeadow編集画面に文字を打ち込んでゆき行末(たぶん76 文字近辺、詳しいことは知らない)に到達したら改行して次の行にカーソル を移動してくれる。つまり意識して自分で改行を入れなくてもよい。加除訂 正を繰り返して行頭も行末も不揃いになったら整形コマンドを使う。ワープ ロソフトのようなリアルタイム全自動整形ではなく半自動整形になる。

vimを使い始めてから日本語文の整形用にformat.vimを入れる。vimには auto-formatがあって整形機能があるけれども、vimそのものが洋物なので日 本語を扱う仕組みは備えてないだろう。例えば、禁足処理はできないと思 う。その隙間を埋めるものがformat.vimになるのだと思う。

format.vimを入れた後でskk.vimを入れる。meadow(emacs)でauto-fill-mode を使う勝手には近付いたけれど、行末尾の76文字目近辺で自動的に改行して 次の行頭にカーソルを送ってくれる機能がない。この機能なしではmeadowと の並行使用はできないと思う。vimの操作法を忘れないために時折vimにさわ るだけになる。

あるときvimでskk.vimにより日本語入力していたらstatus-lineのskkの入力 モードを示す[SKK:あ]の直後にFILLの文字があることに気付く。ひょっとし て76文字目で改行を自動挿入してくれるということではと思う。試してみる と確かにそうなる。何が切っ掛けでautofillになったのだろう。そこで色々 なキーを叩いてみる。インサートモードであるから単独文字キーではその文 字が入るだけである。「C-k」でstatus-lineのFILL文字が現われたり消えた りすることが分かる。おそらくskkをオンオフする「C-j」で指がすべって 「C-k」を押したのだろう。

meadow(emacs)で使う本家skkにはマニュアルやチュートリアルがある。対す るskk.vimにはマニュアルがない。vimスクリプトであるskk.vimを自分で解 読するしかない。スクリプト自身がマニュアルになる。幸いなことに skk.vimには数多くのコメントが書かれている。「C-k」が skk_autofill_toggle_keyであることはskk.vimに「Auto Fillのトグルをす るキー」と書かれていることで知れる。

これでmeadowとvimにおけるskkを使った日本語入力の使い勝手がほぼ同じに なる。vimの使い方に早く慣れたい事情があってmeadowとvimが半々な使用頻 度になる。vimで一番よいのはmeadowより起動が速いことである。

vimにはコマンドモードとインサートモードがある。現在vimがどちらのモー ドに居るかはカーソルの形で分かる。字間の縦棒ならインサートモード、文 字塗りつぶしの豆腐形ならコマンドモードである。カーソル形状だけでなく カーソルの色も変わる。それでも残念なことにしょっちゅうモードを取り違 える。

二つのモードのどちらに居るかのもう一つの判断法はミニバッファに「-- 挿入 --」や「-- 挿入 (言語) --」の文字が表示されておればインサート モード、文字なしならコマンドモードというのがある。なお、(言語)の文字 は仮名漢字変換がオンのとき入る。

skk.vimとformat.vimの相性問題(matching)

skk.vimによる日本語入力では「C-k」によりautofillが働く。指定文字数の 行末まで入力すると改行されて次の行にカーソルが移動する。便利な機能で あるが一つだけ気にかかることがある。それはインサートモードでミニバッ ファに表示される「-- 挿入 --」や「-- 挿入 (言語) --」の文字である。

なにゆえか行末で改行され次の行にカーソルが自動的に移った時点で「挿 入」文字が消えてしまう。一旦コマンドモードに復帰してから再度インサー トモードに戻ると「挿入」文字が復活する。autofillを使わなければイン サートモードに居る際に「挿入」文字が消えることはない。

この原因を探りたい。vimがコマンドモードなのかインサートモードなのか をカーソル形状が字間の縦棒であるか文字塗りつぶしの豆腐形であるかだけ では判断しきれない。しょちゅう間違える。インサートモードに居る間はミ ニバッファの「挿入」文字が消えないようにしたい。

skk.vimとしてはv0.22(2006-10-11)を使っている。ネット検索によると新し いバージョンが出る見通しはないらしい(tyru氏が引き継いでいる)。

もしかしたらskk.vimにおいてautofillが必要とするformat.vimを新しいも のに置き換えたらどうかと思う。これはとんでもない大間違いであった。 skk.vimが作られた当時のformat.vimを使わないとautofillは上手く動かな い。skk.vimがformat.vimの存在を必要としているということは、skk.vimの 作者がその当時のformat.vimでskk.vimが動くように作ったということであ る。

format.vimはskk.vimのために作られているのではない。日本語文整形用と して作られている。skk.vimの都合は考えないでバージョンアップするかも しれない。両者の間を取り持つ仕組みがなければどうしようもない。 format.vimがバージョンアップしたならskk.vimもバージョンアップしなけ ればならないことは当然にあり得る。

幸運にも私は、skk.vimのautofill機能を生かすことができるバージョンの foramat.vimを使っていたのである。それはkaoriyaさんのページにある format.vimの1.7alpha-2であり、次のパッケージに含まれている。

http://www.kaoriya.net/dist/vim-6.4.006-w32j.tar.bz2
Version: 1.7 alpha-2 Last Change: 06-Oct-2004

skk.vimとformat.vimの間に相性問題があることに気付くまでの右往左往の 顛末を記録しておきたい(残念ながらautofillでの「挿入」文字消失問題は 未だ解明できない)。

kaoriyaさんのページにはformat.vimの最新・最近バージョンが次にある。

http://www.kaoriya.net/testdir/
Version: 1.8rc1 Last Change: 14-Nov-2009
Version: 1.7rc2 Last Change: 03-Mar-2007

現用のformat.vimのバージョン1.7alpha-2を新しい1.7rc2に置き換えてみ る。そうすると「C-k」を打ってもautofillの「FILL」文字が表示されな い。インサートモードに居るので本文に「?」が表示される。

マニュアルもチュートリアルもないのでskk.vimから読み取るしかない。 「FILL」文字をskk.vimの中から探すと次があった。

if exists("b:skk_autofill") && b:skk_autofill && str != " "
  let str = str . "FILL"
endif

バッファローカルな変数b:skk_autofillが存在してその値が非ゼロになれば 「FILL」文字が表示される。変数b:skk_autofill自体はskk.vimの814行目に 書かれた初期化でゼロにセットされる。これが非ゼロになるのは1424行目の 条件演算子で書かれた次の部分になる。

elseif a:key == "\<C-k>"
  let b:skk_autofill = b:skk_autofill ? 0 : 1
  let str = ""
else

ここで行き詰まる。「FILL」文字が表示されない理由の手掛かりにならな い。ここでskk.vimの200行目に書かれているコメントに注目する。

そこには「C-k」をskk_autofill_toggle_keyにmappingするにはformat.vim が読み込まれてないといけないとある。ここでの疑問としてskk.vimは format.vimが読み込まれたかどうかをどこで判定するのであろうかとなっ た。

(注)スクリプトを読み込む順番はコマンドモードから「:scriptnames」を実 行することで分かる。説明は「:help scriptnames」のヘルプ doc/repeat.txtにある。

autofillを実行しているのはskk.vimの3005行目から始まるスクリプトロー カルなユーザー定義関数s:SkkDoAutoFill()である。その冒頭に次がある。

if !exists("g:format_allow_over_tw")
    let b:skk_autofill = 0
    return
endif

グローバル変数g:format_allow_ovet_twが存在しなければb:skk_autofillを ゼロにセットして何もせずにユーザー定義関数の呼び出し元に帰るとある。 この変数g:format_allow_over_twはformat.vimで定義されるものである。ど うやらskk.vimはこの変数が定義されているかどうかでformat.vimを読み込 んだかどうかを判定しているらしい。

format.vimのバージョン1.7alpha-2とバージョン1.7rc2のどちらにも変数 g:format_allow_over_twは定義されており、この変数の扱いに関する違いは ない。これはautofillが有効にならない理由でない。

そこでformat.vimのバージョン1.7alpha-2とバージョン1.7rc2を並べて比較 する。そうすると冒頭のoptionsの部分にformat_commandの定義があるかな いかの違いがみつかる。

format_commandの定義がないformat.vimのバージョン1.7rc2を使っていると き、vimの設定ファイル~/_vimrcに次を書き込んでみる。

let format_command = "gq"

そうすると「C-k」で「FILL」文字が表示されるようになった。なにゆえ format.vimのバージョン1.7rc2で変数format_commandに関する記述が削除さ れたのかは分からない。skk.vimの中に変数g:format_commandは二回現われ るがskk.vimで定義されてはいない。参照しようとしたg:format_commandが 見つからないのでskk.vimのautofillが働かなくなったようである。

format_commandの設定を ~/_vimrcに書き込んでformat.vimのバージョン 1.7rc2をしばらく使ってみた。autofillが動作する行末で仮名漢字変換が上 手く働かないことがある。format.vimのバージョン1.7alpha-2がskk.vimで 使える最終版なのかもしれない。

format.vimについてはkaoriyaさんのページに解説がある。

「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修正 」

kaoriyaさんのページにはオリジナルなformat.vimの在所が紹介されている がサイトは消滅している。ウェブアーカイブからformat.vimの旧バージョン 1.2.2(2000-Jul-18)をダウンロードすることができる。

http://web.archive.org/web/*/http://www.win.ne.jp/~takuhiro/scripts/format.vim
http://www.win.ne.jp/~takuhiro/scripts/format.vim (リンク切れ)

入手困難とみられる旧バージョンのformat.vimを次に置きます。

format.vim
Version: 1.7 alpha-2 Last Change: 06-Oct-2004
Version: 1.6.1 Last Change: 26-May-2004
Version: 1.2.2 Last Change: 18-Jul-2000
(注)format.vimのバージョン1.2.2では変数の最初の文字にドル記号が使わ れていて、例えば$format_allow_over_twのようになっているのでそのまま では使えないようです。
以上は次の記事を補足するものです。

| | コメント (0) | トラックバック (0)

« 2011年2月 | トップページ | 2011年4月 »