作業効率化のため、Visual Studio 2013 でコードスニペットを作ってみました。
今回は、以下の様なコードを自動生成するスニペットを作ります。
namespace test {
} // namespace test
スニペットファイルを作る
まずは、スニペットを記入するためのファイルを作ります。
- Visual Studio の
「ファイル > 新しいファイル」
を選択します。 -
「全般 > XML ファイル」
を選択し、「開く」をクリックします。 - このファイルの拡張子を *.snippet に変更して、ファイルを保存します。
(今回は、my_namespace.snippet としました。)
この手順を見て分かる通り、スニペットファイルは XML で記述します。
ヘッダーを記述する
次に、最低限必要になるヘッダー部分を記述します。
<CodeSnippet Format="1.0.0">
<Header>
<Title>my_namespace</Title>
<Shortcut>ns</Shortcut>
</Header>
</CodeSnippet>
この内、重要なのは以下の2つのタグです。
タグ名 | 概要 |
---|---|
Title | スニペットの名前。 コードスニペットマネージャにはこの名前で表示されます。 |
Shortcut | スニペットを呼び出すための名前。 Intellisense で表示されます。 |
コードを記述する
最後に、挿入するコードを記述します。
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippet Format="1.0.0">
<Header>
<Title>namespace</Title>
<Shortcut>ns</Shortcut>
</Header>
<Snippet>
<Code Language="CPP">
namespace test {
} // namespace test
</Code>
</Snippet>
</CodeSnippet>
<Code> タグの値に挿入したいコードを記入します。
Language には、挿入するコードの言語を指定します。
ここに指定する文字列は
http://msdn.microsoft.com/ja-jp/library/ms171418.aspx#code
の Language 属性値に載っています。
これで準備は整いました。
Visual Studio に登録して、使ってみる。
では、実際にスニペットを登録して使ってみます。
- Visual Studio の
「ツール > コードスニペットマネージャー」
を選択します。 - **「インポート」**をクリックして、先ほど作ったスニペットファイル(my_namespace.snippet)を開きます。
- **「Visual C++ コードスニペット」**に先ほど開いたファイルが表示されていることを確認します。
- **「場所」の「My Code Snippets」にチェックを入れ、「完了」**をクリックします。
- **「コードスニペットマネージャー」の「My Code Snippets」**に先ほど追加したスニペットが追加されていることを確認します。
これでスニペットが使えるようになりました。
試しに「ns」と打ち込むと、Intellisense に「ns」が表示されているはずです。
ちなみに……
今回行った「インポート」は所定の位置に *.snippet ファイルをコピーするだけですので、既に所定の位置にあるスニペットファイルはインポートの必要はありません。
今回の例では
C:\Users\[user_name]\Documents\Visual Studio 2013\Code Snippets\Visual C++\My Code Snippets
にコピーされていると思います。
コードの一部を指定したものに置き換える
さて、無事にスニペットが使えるようになりましたが、名前空間の名前は自由に指定できないと不便でなりません。
というわけで、名前空間の名前を自由に入力できるようにしてみます。
<?xml version="1.0" encoding="utf-8"?>
<CodeSnippet Format="1.0.0">
<Header>
<Title>namespace</Title>
<Shortcut>ns</Shortcut>
</Header>
<Snippet>
<Declarations>
<Literal>
<ID>name</ID>
<Default></Default>
</Literal>
</Declarations>
<Code Language="CPP">
namespace $name$ {
} // namespace $name$
</Code>
</Snippet>
</CodeSnippet>
<Code> タグの名前の部分が $name$ に置き換わっていますが、
これは <Declarations \ Literal \ ID> タグの値の name のことを指しています。
今回重要なのは、<Literal> タグの中身です。
タグ名 | 概要 |
---|---|
<ID> | 置き換え場所を指定するためのリテラル名を入れます。 |
<Default> | リテラルのデフォルト値を指定します。 何も指定しない場合は今回のように何も記述しません。 |
これでスニペットを呼び出すと、名前の部分が編集可能になります。
最後に
今回は、必要最小限の記述でコードスニペットを作成しました。
コードスニペットのタグやリテラルは他にもありますので、自分でも調べてみてください。
参考サイト
-
チュートリアル: コード スニペットを作成する - MSDN - Microsoft
http://msdn.microsoft.com/ja-jp/library/ms165394.aspx -
コード スニペット スキーマ リファレンス - MSDN - Microsoft
http://msdn.microsoft.com/ja-jp/library/ms171418.aspx -
コード スニペットの作成例 - 株式会社ティーケーフォース
http://www.tk4.co.jp/develop/codesnippet/recipe.html