スニペットの使い方 (2)

前回は、スニペットを使って簡単な HTML を作成しました。今回は、スニペットの選択方法を説明してから、新しいスニペットを自分で作成する方法について説明します。

スニペットの選択方法

スニペットの選択には、さまざまな方法が存在します。よく使う方法は、トリガー文字列をタイプしてから、ショートカット キー (通常は、Tab) を押す方法です。たとえば、HTML の設定では、 body とタイプしてから Tab キーを押せば、「スニペットと設定の関連付け

スニペットには設定との関連付けが存在することに注意する必要があります。EmEditor では、開くファイルの拡張子によって、異なる設定を選択するようにできています。たとえば、拡張子が「.htm」のファイルを開けば、「HTML の設定」、「.txt」のファイルを開けば 「Text の設定」が選択されます。選択されている設定の名前は、ステータス バーに表示されています。そして、スニペットには、ある特定の設定の場合にのみ選択されるように関連付けられていることがあります。

関連付けが関係してくる場面は、次のようしてスニペットを選択する場合です。

  •  トリガー文字列をタイプしてからショートカット キーを押す場合。
  •  [スニペットの選択] コマンドを選択して、スニペットの一覧を表示してから選択する場合。

以上のいずれかの場合は、関連付けられている設定が選択されている場合のみ、目的のスニペットを選択できるようになっています。

スニペット カスタムバーのツリーで、関連付けられている設定を確認するには、右クリックで表示されるメニューで [表示] サブ メニューの [設定] を選択してこの項目がチェックされた状態にします。すると、各スニペット、またはその親のフォルダの名前の右に括弧内に関連付けられている設定が表示されます。既定のスニペット ツリーでは、「General」以外のフォルダが、なんらかの設定と関連付けられています。たとえば、「ASP」フォルダと「ASP_vb_NET」フォルダは、HTML の設定と関連付けられており、「C/C++」フォルダは、C# と C++ の 2 つの設定と関連付けられています。既定では、フォルダの中の各アイテムには関連付けが指定されていないため、その場合は、その親のフォルダの関連付けが使用されるわけです。

関連付けを変更するには、各アイテム、またはフォルダで右クリックして表示されるメニューから [プロパティ] を選択します。そして [設定] タブを選択して、[次の設定でのみオート コンプリートを行う] チェック ボックスをチェックし、その下の一覧から、関連付けたい設定をチェックします。

スニペットの作成

新しいスニペットを作成するには、スニペット カスタム バー内で右クリックしてから、表示されるメニューで、[スニペットの新規作成] を選択します。ここで、あるフォルダで右クリックすれば、そのフォルダの中にスニペットができますし、空白の部分で右クリックすれば、ルートにスニペットができます。

[スニペットの新規作成] を選択すると、これから作成しようとするスニペットのプロパティが表示されます。このプロパティで設定できる項目について説明します。

[名前] には、任意の名前を入力します。

[トリガー] には、タイプした文字列とショートカットの組み合わせによって自動的にスニペットを挿入させたい場合の文字列を入力します。

[既定のショートカットを使用] をチェックしておくと、トリガーをタイプ後、グローバルで設定されたショートカット キー (通常は、Tab) を押したときに、スニペットが挿入されます。既定のショートカットを使用したくない場合は、その下の [ショートカット] に、割り当てたいショートカットを入力します。

[ヒント] には、トリガー文字列をタイプした後に表示されるツール チップの内容を入力することができます。これは任意設定であり、指定しなくてもかまいません。

[種類] には、スニペットの種別を指定します。実は、アイテムには、「スニペット」と「マクロ」が存在します。さきほどのポップアップ メニューから [スニペットの新規作成] を選択した場合には、ここには [スニペット] が選択されていますが、[マクロの新規作成] を選択した場合は、ここには [マクロ] が選択されています。

[テキスト] には、挿入したいスニペットを入力します。ここには、単純なテキストだけを入力することも、プレイスホルダーなどを含めた複雑なスニペットを入力することもできます。この右横の [>] ボタンをクリックすると、定義済みパラメータの一覧が表示され、その中から選択して挿入することができます。また、その下の [編集] ボタンをクリックすると、EmEditor のウィンドウでスニペットを編集することができます。この [テキスト] にどのようなテキストを入力したらいいかを、これから説明します。

プレイスホルダー

プレイス ホルダーを使って、スニペットを挿入直後に、カーソルをどこに移動するかを指定することができます。その後、ユーザーが、通常 Tab キーを押すことによって、次のタブ ストップに移動することができます。これらのタブ ストップをプレイスホルダーと呼んでいます。プレイスホルダーは $n という形式で表現することができます。最初のプレイスホルダーが $1 で、その次のプレイスホルダは、$2、$3、となり、最後のプレイスホルダーが $0 になります。

次の例では、スニペットを挿入後、最初のカーソル位置は、 $1 になります。次に Tab キーを押すと、$2 の位置にジャンプし、さらに再び Tab キーを押すと $0 の位置にジャンプします。

(a target=”$1″ href=”$2″)$0(/a)

プレイスホルダーには、既定の値を与えることができます。

(a target=”${1:_blank}” href=”${2:url}”)$0(/a)

上の例では、スニペット挿入直後では、最初のプレイス ホルダーの既定値 _blank が選択された状態になります。ここで、ユーザーは、Backspace または Delete キーを押して既定値を削除することもできますし、新しい文字をタイプして既定値を別の文字列に書き換えることができるわけです。

プレイスホルダーは、ネスティング (入れ子構造) にすることもできます。

(a ${1: target=”${2:_blank}”} href=”${3:url}”)$0(/a)

上の例は、最初に挿入すると、 target=”_blank” の部分が選択された状態になります。ここで、Tab キーを押すと、選択テキストは _blank に変わりますし、Backspace または Delete を押すと、target=”_blank” 全体が削除さるため、次の Tab キーを押すと _blank はスキップして url の部分を選択するようになります。

ミラー

同じインデックスのプレイス ホルダーを使用すると、それらすべてのプレイスホルダーの値が同じ、つまりミラーになります。次のスニペットは for ループを挿入します。この例では、プレイス ホルダー 2 の既定値が i になっていて、同じインデックスのプレイス ホルダーがほかの 2 箇所で使用されています。カーソルが ${2:i} の位置にあるときに i の値を変更すると、ほかの場所にもミラーされます。

for( ${1:int} ${2:i} = ${3:0}; $2 != ${4:10}; $2++ ){
$0
}

変換

あるプレイスホルダーの値を別の場所に正規表現と置換フォーマットを使用して変換することができます。構文は、次のようになります。

${n/regexp/replace_format/option}

ここで、

n: プレイスホルダーのインデックス
regexp: 検索する正規表現
replace_format: 置換フォーマット
option: 現在のところ i (大文字と小文字を区別しない) のみがサポート

となります。

次の例は、最初の行に入力した文字を次の行に最初の文字だけ大文字にしてコピーします。

$1
${1/./U/}

定義済みパラメータ

$ から始まる単語には特別な意味があり、パラメータと呼ばれます。スニペットで使用されるパラメータの一覧は、ヘルプの定義済みパラメータをご覧ください。たとえば、スニペットに ${Date} を使用すると、今日の日付が挿入されます。

また、一覧で定義されていない名前を使用して、${parameter_name} の形式で、ユーザー定義のパラメータを定義することができます (parameter_name は上の一覧で定義されていない値)。新しいユーザー パラメータが使用されると、ダイアログ ボックスが表示され、値の入力を促されます。ただし、プラグインのプロパティのグローバル パラメータで保存されているパラメータの場合は、値の入力は促されません。

シェルコード

選択テキストなど、指定する文字列を標準入力として渡して、コンソール アプリケーションを実行することができます。そのコンソール アプリケーションの標準出力と標準エラーは、テキスト文書のカーソル位置にリダイレクトされます。シェルコードの構文は以下のとおりです。

`- appname
stdin1
stdin2

`

つまり、シェルコードを ` (バック クォート) で囲み、その中の最初の文字は、- (ハイフン) になります。結果の文字列が改行 (CR、LF、または CR+LF) で終わる場合、その改行は削除されます。たとえば、次のスニペットは ${name} パラメータの中身を大文字で挿入します。

`- powershell –
# prompts for name then echos the hello greeting
$name = “${name}”.ToUpper()
“Hello $name!”
exit
`

上の例では、シェルコードの中身のパラメータを解析していましたが、スニペット パラメータを解析したくない場合は、次のように書くことができます。

`!- appname
stdin1
stdin2

`

また、コマンド プロンプトで使用されるコマンドを実行したい場合は、 `#cmd shell_code` の形式でコマンド プロンプト ウィンドウ (cmd.exe) に渡すシェルコードを定義することができます。つまり、` (バック クォート) の中身の最初に #cmd と記述します。コンソール アプリケーションからの標準出力および標準エラーは、テキスト文書のカーソル位置にリダイレクトされます。たとえば、次のスニペットは現在のフォルダ一覧を挿入します。

`#cmd DIR`

マクロ

`# ` の形式を使用して、スニペットにマクロを含めることができます。` (バック クォート) の中身の最初の文字、# が、マクロであることを示しています。何も指定していない場合は、JavaScript になります。スニペット中のマクロの場合、Interface オブジェクトを使用して、スニペットと EmEditor マクロ エンジンの間で値を受け渡すことができます。次の例は、クリップボードの中身をカーソル位置に挿入します。

`# Interface.write( clipboardData.getData(“”) );`

Interface.write() メソッドを使用すると、マクロの結果をスニペットに渡します。

以上、さまざまなシェルコードとマクロを見てきました。これらの形式をまとめると、次のようになります。

`- …`シェルコード
`!- …`シェルコード (パラメータを解析しない)
`#cmd …`コマンドプロンプト
`# …`マクロ (JavaScript)
`#language=”VBScript” …`マクロ (VBScript)
`!# … `マクロ (パラメータを解析しない)

インポートとエクスポート

以上のように、スニペットを使用すると、さまざまな定型文を自動挿入することができます。スニペットは、単に定型文を入力するだけでなく、シェルコードやマクロを使用して、さまざまな編集作業を可能にし、EmEditor の機能を容易に拡張することが可能です。

EmEditor のスニペットを自分で作成するのは、慣れないと難しいかもしれません。でも、他のユーザーの有志の方が作成したスニペットを簡単にインポートすることも可能です。EmEditor ホーム ページのライブラリのスニペット カテゴリには、EmEditor ユーザーの方が作成したスニペットをまとめてあります。ここから好きなスニペットをダウンロードして EmEditor のスニペット プラグインにインポートすることができます。

さらに、EmEditor のスニペットは、TextMate という Macintosh 用テキストエディタのスニペットと、シェルコードやマクロを除き、ほとんど互換性があるため、TextMate 用の膨大なスニペットをインポートして利用することも可能です。TextMate Bundles の中の Bundles のフォルダの中からダウンロードできます。それぞれのフォルダで Snippets というサブフォルダがあれば、その中の拡張子が .tmSnippet というファイルをダウンロードすると、EmEditor からインポートすることができます。ただし、特殊な文字がファイル名に含まれているとダウンロードできなかったり、ファイルの拡張子が変わってしまうことがあります。そこで、この Web ページは、Subversion (SVN) というバージョン管理システムを使用しているため、SVN のクライアントを使用してダウンロードするのが確実で、一度に複数のファイルをダウンロードできるので便利です。

インポートしたいスニペット ファイルを用意できたら、EmEditor にインポートするのは簡単です。Windows エクスプローラで、インポートしたいファイルを選択し (複数選択可)、スニペット ツリー上でドラッグ & ドロップします。スニペット ツリーのあるフォルダ上でドロップすれば、そのフォルダ内にスニペットが展開されます。スニペット カスタム バー内で、ツリーの下の何もないところでドロップすれば、ルートに展開されます。このようにして、インポートしたいスニペットをインポートすることができます。

逆に、自分で作成したスニペットをエクスポートするには、エクスポートしたいファイルの存在するフォルダを選択してから、マウスの右クリックで表示されるメニューで、[インポート/エクスポート] – [このフォルダをエクスポート] を選択し、保存するファイル名を指定します。すると、ファイル拡張子が eesnip のスニペット ファイルが作成されます。いいスニペットができたら、ぜひ EmEditor ライブラリにて公開してください。

まとめ

スニペット プラグインを使用すると、高速にテキスト入力作業を行えることがわかっていただけたと思います。ぜひ、皆様も EmEditor のスニペットを活用して、テキスト編集の作業能率を向上させてください。