LoginSignup
3
3

More than 3 years have passed since last update.

Emmetで展開できるHTMLを自分好みに変更する

Last updated at Posted at 2020-01-29

TL;DR

  • !で展開できるHTMLのひな形を変更したい。
  • emmet.extensionPathsnippets.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>}で、

dochtml[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のひな形を変更することができました。

私はあまり編集することもなさそうですが、、、

備忘録として!

おわり

3
3
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
3
3