ドキュメントへのアタッチ


 先の例では独立したプログラムとしてスクリプトを実行しましたが、 実際の利用では開いているドキュントに対して何らかの処理を行いたい場合が多いものです。 このような場合は、スクリプトをドキュメントにアタッチして実行します。アタッチされたスクリプトでは、 thisDocument, thisView という組み込みオブジェクトを使って、処理をしたいドキュメント、ビューを参照することができます。
 アタッチの方法には2種類あります。

  • スクリプトを Ctrl + 0〜9 に登録し。Ctrl + 0〜9 を入力する。
  • vi コマンドで :run を使用する。
 定期的に使用するスクリプトは前者の方法で登録しておいた方がいいでしょう。 スクリプトをさくさくっと作って、その場で実行するだけならば後者の方がいいでしょう。場合で使い分けてください。

■ スクリプトの登録

 スクリプトを登録するには、まずスクリプトファイルを作成します。例として、 カーソル位置の行の文字を反転するスクリプト "rev.vvs" を作ってみます。実際にやってみましょう。

    //  カーソル位置の行の文字を反転するスクリプト

    function revers(str)
    {
        var len = str.length();
        var r;
        for(var ix=0;ix<len;ix+=str.charType(ix) ? 2 : 1)
            r = str.charAt(ix) + r;
        return r;
    }

    function main()
    {
        var pos = thisView.getCursorPos();
        var lineStr = thisView.getLineString(pos.line);
        var r = revers(lineStr);
        thisView.viCommand("0D");
        thisView.insertText(r);
    }
これを、"rev.vvs" というファイル名で適当なディレクトリに保存します。 そして、共通プロパティの起動タブで、スクリプトディレクトリをそのディレクトリの設定しておいてください。

 これで準備が整ったので、次にこのスクリプトをキーに割り付けます。その方法には以下の2種類があります。

 ◎ ダイアログでの登録

 「スクリプト」-「スクリプト登録」 メニューを選び、登録ダイアログを表示します。 割り付けたい番号のところに、タイトル(この場合は "rev" としましょう)とファイル名 (この場合は "rev.vvs")を入力します。そして、OKを押すと登録は完了です。

 ◎ :scr による登録

 vi のコロンコマンドを使うと、もっと簡潔に登録することが出来ます。形式は、 『:scr<0-9> ファイル名』です。たとえば0に割り付ける場合は『:scr0 rev.vvs』とします。 慣れてきたらこちらの方が楽に登録できます。

 登録が完了したら、さっそくスクリプトを実行してみましょう。適当なファイルを開いて、 コントロールキーを押しながら、さっき登録した番号を押してみてください。カーソル行の文字列が反転されます。