LoginSignup
21
24

More than 5 years have passed since last update.

Visual Studio 2013 でコードスニペットを使えるようにしてみた

Posted at

作業効率化のため、Visual Studio 2013 でコードスニペットを作ってみました。

今回は、以下の様なコードを自動生成するスニペットを作ります。

namespace test {
}    // namespace test

スニペットファイルを作る

まずは、スニペットを記入するためのファイルを作ります。

  1. Visual Studio の
    「ファイル > 新しいファイル」
    を選択します。
  2. 「全般 > XML ファイル」
    を選択し、「開く」をクリックします。
  3. このファイルの拡張子を *.snippet に変更して、ファイルを保存します。
    (今回は、my_namespace.snippet としました。)

この手順を見て分かる通り、スニペットファイルは XML で記述します。

ヘッダーを記述する

次に、最低限必要になるヘッダー部分を記述します。

my_namespace.snippet
<CodeSnippet Format="1.0.0">
  <Header>
    <Title>my_namespace</Title>
    <Shortcut>ns</Shortcut>
  </Header>
</CodeSnippet>

この内、重要なのは以下の2つのタグです。

タグ名 概要
Title スニペットの名前。
コードスニペットマネージャにはこの名前で表示されます。
Shortcut スニペットを呼び出すための名前。
Intellisense で表示されます。

コードを記述する

最後に、挿入するコードを記述します。

my_namespace.snippet
<?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 に登録して、使ってみる。

では、実際にスニペットを登録して使ってみます。

  1. Visual Studio の
    「ツール > コードスニペットマネージャー」
    を選択します。
  2. 「インポート」をクリックして、先ほど作ったスニペットファイル(my_namespace.snippet)を開きます。
  3. 「Visual C++ コードスニペット」に先ほど開いたファイルが表示されていることを確認します。
  4. 「場所」「My Code Snippets」にチェックを入れ、「完了」をクリックします。
  5. 「コードスニペットマネージャー」「My Code Snippets」に先ほど追加したスニペットが追加されていることを確認します。

これでスニペットが使えるようになりました。
試しに「ns」と打ち込むと、Intellisense に「ns」が表示されているはずです。

ちなみに……
今回行った「インポート」は所定の位置に *.snippet ファイルをコピーするだけですので、既に所定の位置にあるスニペットファイルはインポートの必要はありません。

今回の例では

C:\Users\[user_name]\Documents\Visual Studio 2013\Code Snippets\Visual C++\My Code Snippets

にコピーされていると思います。

コードの一部を指定したものに置き換える

さて、無事にスニペットが使えるようになりましたが、名前空間の名前は自由に指定できないと不便でなりません。

というわけで、名前空間の名前を自由に入力できるようにしてみます。

my_namespace.xml
<?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> リテラルのデフォルト値を指定します。
何も指定しない場合は今回のように何も記述しません。

これでスニペットを呼び出すと、名前の部分が編集可能になります。

最後に

今回は、必要最小限の記述でコードスニペットを作成しました。
コードスニペットのタグやリテラルは他にもありますので、自分でも調べてみてください。

参考サイト

21
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
24