aptpod Advent Calendar 2018 6日目の記事です。
せっかく5日目まで続いているので書くことにしました。
今日決めたので小ネタで申し訳ないです。
対象
- vscodeでgo書いてる人でスニペットの存在をしらない人
- そもそもvscodeのスニペット機能知らない人
- これからvscodeで何かプログラミング言語やりはじめるよーな人
本題
vscodeにはユーザスニペットの機能があります
例えば、goであればgo.jsonのようなファイルが用意されています
ここに自分がショートカットで呼び出したいコードとそれに対応するキー入力を書いておけば下記のように
スムーズにコードが書けるようになります。(気持ちいい)
上記は、go使いなら誰しも一回は書くであろうcontextのスニペットです。
こんな風にgo.jsonに書いてあげます。
{
"context": {
"prefix": "ctx",
"body": [
"ctx, cancel := context.WithCancel(context.Background())"
]
}
}
その他便利なショートカット
デバッグ
一番良く使ってます。。
{
"Print to console": {
"prefix": "fff",
"body": [
"fmt.Printf(\"%#v\\n\", $1)"
],
"description": "Log output to console"
},
}
エラー系
主題は別だけどmattnさんのブログで見かけて即登録
{
"iferr": {
"prefix": "ie",
"body": [
"if err != nil {",
"\t$1",
"}"
]
},
}
その他
deferも書くのめんどいのでこう
{
"defer func": {
"prefix": "df",
"body": [
"defer func(){ $1 }()"
]
},
}
tickerも地味に忘れるのでこう
{
"ticker": {
"prefix": "tic",
"body": [
"ticker := time.NewTicker($1 * time.Second)"
]
},
}
さらにselect tickerしたければそれも登録(やりすぎかもしれません)
{
"for select tic": {
"prefix": "fst",
"body": [
"ticker := time.NewTicker($1 * time.Second)",
"for {",
"\tselect {",
"\t\tcase :",
"\t\tcase <-ticker.C:",
"\t}",
"}"
]
},
}
余談ですが仕事柄、bitも確認したいときもあるのでこんなのも登録してます
{
"1byte_bit": {
"prefix": "1b",
"body": [
"fmt.Printf(\"%08b\\n\", $0)"
]
},
"2byte_bit": {
"prefix": "2b",
"body": [
"fmt.Printf(\"%16b\\n\", $0)"
]
},
}
sample
package main
import (
"fmt"
)
func main() {
fmt.Printf("%08b\n", 255)
// 11111111
}
さいごに
スニペットによく使うものはとりあえず書いておくと、いちいちググらずに済んで楽ですし
自分のメモとして残しとくといいかも知れません。
僕のリポジトリに他に登録しているスニペットは貼ってあります。
https://github.com/smith-30/vscode-go-snippet
こんなのも便利というのあれば、MRなりこの記事のコメントに書いてくださると嬉しいです。