TL;DR
-
!
で展開できるHTMLのひな形を変更したい。 -
emmet.extensionPath
にsnippets.json
が入ったフォルダを指定することで、emmetのスニペットを登録できる。 - emmet公式が出してるemmetのスニペットを参照しながらつくると楽。
実行環境
- VSCodeの最新版(2020.01.30現在)
!
で展開できるHTMLのひな形を変更したい
理想形
理想の形はこんな感じです。
※lang
属性はすでに設定で変更済み。この変更はぐぐるとめっちゃヒットする。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
</body>
</html>
title
タグの下にlink:css
が入ったひな形をつくりたいのです。
デフォルトだと、link:css
は入っていません。
スニペットをつくる
html.json
につくるパターン
下記は、拡張子がhtml
のときに使えるスニペットを定義して、emmetのひな形を作成するパターンです。
VSCodeでemmetのHTMLテンプレート変更とenをjaにする! - Qiita
こちらは、emmetの展開後のHTMLをスニペットとして定義する形になります。
こちらの例では"div.flex-container"と入力したときに<div class="flex-container"></div>
と出るようにスニペットを定義しています。
{
"flex container": {
"prefix": "div.flex-container",
"body": [
"<div class='flex-container'>$1</div>",
],
"description": "make div with flex-container class"
}
}
ではbodyに、展開後のHTMLではなく、div.flex-container
と入れたらどうなるでしょう。
答えは"div.flex-container"と出てくるだけになります。
snippets.json
につくるパターン
こちらはひとつVSCode上で設定をおこなわないといけない分、面倒です。
ただし、こちらで定義するスニペットでは、emmet記法が使えます。
準備
-
emmet.extensionPath
を設定します。
File > Preferences > Settings > emmet.extensionPath
ここには、snippets.json
を置くフォルダパスを指定します。
書いてみる
VSCodeの公式サイトにサンプルとしてスニペットが載っています。
{
"html": {
"snippets": {
"ull": "ul>li[id=${1} class=${2}]*2{ Will work with html, jade, haml and slim }",
"oll": "<ol><li id=${1} class=${2}> Will only work in html </ol>",
"ran": "{ Wrap plain text in curly braces }"
}
},
"css": {
"snippets": {
"cb": "color: black",
"bsd": "border: 1px solid ${1:red}",
"ls": "list-style: ${1}"
}
}
}
サンプルにもありますが、こちらはemmet記法をスニペット定義に使えます。
もちろん!
の定義を上書きすることも可能です。
emmet公式が出してるemmetのスニペットを見る
emmetでよく見る省略記法がどうやって定義されているか見れます。
ためしに!
を見てみると、次のように記載されているのがわかります。
!!!+doc
!!!
とdoc
を合わせて使っているんですね。。
!!!
は{<!DOCTYPE html>}
で、
doc
はhtml[lang=${lang}]>(head>meta[charset=${charset}]+meta:vp+title{${1:Document}})+body
となっています。
ということは、doc
を上書きすれば良いみたいですね。
snippets.json
のhtmlの項目にdoc
の行を追加しました。
{
"html": {
"snippets": {
"doc": "html[lang=${lang}]>(head>meta[charset=${charset}]+meta:vp+title{${1:Document}}+link:css)+body"
}
}
}
これでHTMLのひな形を変更することができました。
私はあまり編集することもなさそうですが、、、
備忘録として!
おわり