Visual Studio2012のコードスニペット機能

本物のページはこちら→snippet

Included page "visual-studio:snippet" does not exist (create it now)

vs.png

コードスニペットとは?

コードの切れ端である。
よく使うコードとかを切れ端として登録して、ささっと使おうってことね。

使い方

Visual Studio2012ではコードの編集画面で右クリックすると
「スニペットの挿入」
というメニューがある。
Ctrl+K,X
でもいいみたいね。
たとえばswitchのコードスニペットを選んでみるとこんなかんじになった

switch (switch_on)
        {
        default:
            break;
        }

あらかじめVisualStudioに入っているコードスニペット

私の場合はこの場所だった

J:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\Snippets\1041\Visual C++

みてみると、たくさんの.snippet拡張子を持つファイルが発見された。
拡張子は.snippetだけど、中身はただのXMLファイルである。
先ほどためしたswitchのコードスニペットであるswitch.snippetの中身をみてみると

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>switch</Title>
            <Shortcut>switch</Shortcut>
            <Description>switch ステートメントに対するコード スニペット</Description>
            <Author>Microsoft Corporation</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal>
                    <ID>expression</ID>
                    <ToolTip>分岐の条件となる式</ToolTip>
                    <Default>switch_on</Default>
                </Literal>
                <Literal Editable="false">
                    <ID>cases</ID>
                    <Function>GenerateSwitchCases($expression$)</Function>
                    <Default><![CDATA[default:
    break;]]></Default>
                </Literal>
            </Declarations>
            <Code Language="cpp"><![CDATA[switch ($expression$)
    {
        $cases$$end$
    }]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

自作コードスニペットを登録する

メニューバーから

ツール→コードスニペットマネージャー

を開くとこんな画面になる
codesnippetmanager.png
My Code Snippetってとこに自分のコードスニペットを入れるのか
左下の「インポート」ボタンを押して、そのMyCode Snippetの場所に移動させることもできる。
ためしに超短いコードスニペットを入れてみよう
MSDN:チュートリアル: コード スニペットを作成するを参考に作ってみた。
登録したいコードは<code>タグの内側に入れるようだ。
私が使いたい言語はC++なので属性Languageをcppにする

<Code Language="cpp">

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets
    xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>OpenGL</Title>
        </Header>
        <Snippet>
            <Code Language="cpp">
                 glClearColor(0.0,0.0,0.0,1.0);
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

さて、よく見ると本当は
コードは<![CDATA[]]>で囲まなきゃいけないみたい。
たぶん、後々コードのなかに<とか入ってくると、誤認識するからかな。
とりあえずやってみたら、できたー。

code snippet文法をもっとくわしく

先ほど、あらかじめ登録してあったswitch構文

 <Code Language="cpp">
<![CDATA[
switch ($expression$)
    {
        $cases$$end$
    }
]]>
</Code>

なにやらわけのわからない$expression$やらそういうドルマークで囲まれた記号がある。
もう一度確認しよう。
出てきたコードスニペットはこんなだった
switch (switch_on)
        {
        default:
            break;
        }

???なんだこれ
しかし、1コードスニペットにつき一つのファイルなのか。面倒くさいなぁ。

サポートサイト Wikidot.com