golangの日記

Go言語を中心にプログラミングについてのブログ

vscode スニペットの書き方と同期

vscode.png


vscode(Visual Studio Code) のスニペットの書き方と、Dropbox を使って設定を他のマシンでも同期の方法。

ツールバーの [表示(V)] からコマンドパレットを表示して snippets と入力すれば言語を選択できます。
各言語ごとに JSON を書くようになっていて、snippets ディレクトリはそれぞれ以下のパスにあります。
Linux(Ubuntu)
~/.config/Code/User/snippets
Windows10
C:\Users\[username]\AppData\Roaming\Code\User\snippets



書き方

Creating your own snippets にすべて載っているので簡単に書き方の説明

{
  "スニペットの名前": {
    "prefix": "この文字が検索に引っかかる",
    "body": [
      "スニペットの内容",
      "複数行ある場合は、配列なのでそれに従って記述する"
    ],
    "description": "説明 必要なければ書かなくていい"
  }
}


  • スニペットの名前
    なんでもいいのですが、Objectのキーなので他と重複しないことと、わかりやすい名前を記述する


  • prefix
    この文字が検索に引っかかってサジェストされる
    例えば、Go言語の fmt.Println と書いておけば fmtfln など
    最初でも途中の文字でも拾ってくれる


  • body 実際の内容。 $0 は、Tabキーの移動終わり。$1, $2, $3 ... Tabキーで順番にカーソル移動できる
    // 複数の場所に同じ数字を使えて一気に書ける
    {
        "body": [
            "for ($1 := 0; $1 $2; $1++) {",
            "\t$0",
            "}"
        ]
    }

${1:}, ${2:} は内容を選択状態にする

    // ${2:} のように ${1:} にネストできる
    {
        "body": [
            "int main(${1:int argc, const char *argv[]${2:, const char *envp[]}}) {",
            "\t$0",
            "\treturn 0;",
            "}",
        ]
    }


同期

ディレクトリごとシンボリックリンクにする

$ ln -s ~/Dropbox/snippets ~/.config/Code/User/snippets


> New-Item -ItemType SymbolicLink -Name C:\Users\[username]\Dropbox\snippets -Target C:\Users\[username]\AppData\Roaming\Code\User\snippets