last updated:2023/12/27

Hidemaru Q and A

第II部~知っていると便利な秀丸の機能
 テンプレート


テンプレート

秀丸エディタ Ver.9.12以降では「テンプレート」に対応しています。「テンプレート」とは「スニペット」とも呼ばれる機能で、定型的な内容を入力するための支援機能になります。

解説

「テンプレート」を使用するには、「指令された場所」に「テンプレートファイル」を作成する必要があります。

テンプレートファイルは、単純なものとしては入力したい内容を記述したファイル(例えばメールの定型文のあいさつなど)になります。プログラム等でコード片を入力する場合は、入力個所を設定する等特殊命令(プレースホルダー等)を設定できます。

テンプレートの設定

「テンプレート」を呼び出すには、「テンプレート」コマンドを実行するか「単語補完」を使います。

  • 「テンプレート」コマンドは、メニューの「その他 - コマンド一覧」の「その他編集」にあります。
  • 「単語補完」を使う場合は、「単語補完に含ませる」にチェックを入れてください。また、「ファイルタイプ別の設定」で「単語補完」も有効にしてください。

よく使う場合は、「単語補完」を使うか「テンプレート」コマンドをメニューやツールバーに出しておきましょう。

テンプレートファイルの場所

デフォルトでは「設定用フォルダ」にある「snippets」フォルダが指定されています。

  • フォルダではなく、ファイルを指定してもいい。
  • フォルダ + ワイルドカードも指定可能。

ファイルタイプによって「テンプレート」を使い分けたい場合は、個別にファイル・フォルダを指定したり、ワイルドカードを使います。環境変数やフルパスではない場合は、「設定ファイル用のフォルダ」にあるフォルダ・ファイルと認識されます。

テンプレートファイルの作成

テンプレートファイルと認識する拡張子は3個あり、".txt" ".json" ".mac" です。

".mac"以外は、「新規作成」ボタンや、横にある「▼」マークから新規作成できます。 (新規作成されたファイルのエンコードや、BOMの有無は変更しないようにしましょう)

テンプレートの設定

テンプレート内に特殊命令を埋め込むことも可能です。テンプレート内に入力個所を指定し、TABキーで移動できます。入力個所にはデフォルト値も設定できます。

詳細は秀丸エディタヘルプの「テンプレート」を参照。

特殊命令について

テンプレート内にある "$" から始まる文字列は特殊な意味を持ちます。

  • $数字(1~9)

    入力個所を示します。タブキーで各項目に移動可能です。入力モード時はテンプレートに下線がつきます。

    同じ数字を複数箇所に記述可能で、1か所入力すれば、同じ内容が挿入されます。

    また、デフォルト値を指定可能で、書式は以下になります。

    $(数字,デフォルトの内容)
    ${数字,デフォルトの内容}

    例えば、以下のようなテンプレートを用意します(秀丸マクロの入力補助)。

    while($(1,#max) > $(2,変数名)){
        $2 = $2 + 1;
    }

    2番目の「変数名」に「#cnt」と入力すると、以下のようになります。

    while(#max > #cnt){
        #cnt = #cnt + 1;
    }
  • $c or $0

    カーソル位置(または最後の入力箇所)

    入力個所がない場合、カーソル位置は変わりません。入力個所がある場合は、最後の入力個所になります。

    $c or $0 があると、その位置にカーソルを移動させます。

  • $$

    $記号そのものを示す。

  • $s

    直前の選択内容

テキストファイル(.txt)の場合

テキストファイルの場合、エンコードは UTF-8(BOMあり)です。 (UTF16LE(BOMあり)、Shift_JISでも動作しますが、推奨されていません。)

以下の2通りの方法があります。

  • 1ファイル/1テンプレート

    ファイルの内容がそのまま入力されます。テンプレートの候補/単語補完に表示されるのは「ファイル名」から拡張子をなくしたものになります。

  • 1ファイル/複数テンプレート

    各テンプレートの先頭行に、改ページ"CL"(U+000C)と「キーワード」を記入します。テンプレートの候補/単語補完に表示されるのは「キーワード」になります。

    CLキーワード1
    テンプレート1

    CLキーワード2
    テンプレート2

    改ページ"CL"(U+000C)を入力するには、「その他」-「コマンド一覧」から、「挿入系」-「改ページ」を使います。

jsonファイル(.json)の場合

jsonファイルの場合、エンコードは UTF-8(BOMなし)です。

「テンプレート」を「オブジェクト」として定義します。フォーマットが正しくないと、認識されません。

  • "Object Name" はテンプレートの名前です。テンプレートが複数ある場合は重複させないこと。

  • "prefix" は キーワードになります。

  • "body" は 挿入される内容になります。
    複数行になる場合は、配列として定義します。ダブルクォーテーション「"」、バックスラッシュ(¥マーク)「\」、スラッシュ「/」を含める場合は、 "\"によるエスケープが必要です。

    ダブルクォーテーション     \"
    バックスラッシュ(¥マーク) \\
    スラッシュ                 \/
{
    "Object Name": {
        "prefix": "Keyword",
        "body": [
            "Line1",
            "Line2",
            ""
        ]
    }
}

複数のテンプレートを含む場合は、複数のオブジェクトとし定義します。

{
    "Object Name1": {
        "prefix": "Keyword1",
        "body": [
            "Line1",
            "Line2",
            ""
        ]
    }
    ,
    "Object Name2": {
        "prefix": "Keyword2",
        "body": [
            "Line1",
            "Line2",
            ""
        ]
    }
}
マクロファイル(.mac)の場合

指定されたマクロを実行します。テンプレートの候補/単語補完に表示されるのは「ファイル名」から拡張子をなくしたものになります。

「テンプレート」との違いは、ある程度の動的な処理も可能になる事です。マクロで取得できる情報を元に、直接文字列を挿入したり、テンプレートファイルを生成して呼び出すことも可能です。 (テンプレートを直接呼び出し可能なのは Ver.9.15以降 )

テンプレートとしてマクロが実行されているかどうかは、event キーワードで判断できます。「テンプレート」から呼び出された場合、event キーワード の値が「9」になります。


ページトップ 目次に戻る