div h1 aが<div><h1><a href=""></a></h1></div>になります。サイトー企画内の秀丸マクロライブラリでも公開しています。
E>E に加え、 E E も使えます(>を打つより速いので)。a[href=http://www.google.co.jp]のように属性を指定できます。要素名はそのタグに変換されます。一部の要素では、必須の属性やよく使われる属性があらかじめ付与されて出力されます。基本は XHTML(空要素の末尾が「 />」となる)ですが、設定を変えることで HTML モードにもできます。
h1<h1></h1>
a<a href=""></a>
img<img src="" alt="" width="" height="" />
CSSセレクタと同様、「#」や「.」をそれぞれid属性, clss属性として付与したタグを出力します。
#zen-codingdiv#zen-coding <div id="zen-coding"></div>
.zen_codingdiv.zen_coding<div class="zen_coding"></div>
p.one.two.three<p class="one two three"></p>
div#id.one.two.threediv.one.two.three#id<div id="id" class="one two three"></div>
タグを親子関係(入れ子構造)にして出力します。
table tr tdtable>tr>td<table>
<tr>
<td></td>
</tr>
</table>ul.navigation li.itemul.navigation>li.item
<ul class="navigation">
<li class="item"></li>
</ul>タグを兄弟関係に並べたものを出力します。
h1+div h2+p+div h3+p.one+div.two<h1></h1>
<div>
<h2></h2>
<p></p>
<div>
<h3></h3>
<p class="one"></p>
<div class="two"></div>
</div>
</div>「*」の直後に置かれた数字(1~99まで対応)のぶんだけ、それ以降のセレクタから生成されるタグを繰り返します。
p*2<p></p> <p></p>
ul#hoge li.item-$*3<ul id="hoge">
<li class="item-1"></li>
<li class="item-2"></li>
<li class="item-3"></li>
</ul>div#section-$*3 div#subsection$$-$*2<div id="section-1">
<div id="subsection1-1"></div>
<div id="subsection1-2"></div>
</div>
<div id="section-2">
<div id="subsection2-1"></div>
<div id="subsection2-2"></div>
</div>
<div id="section-3">
<div id="subsection3-1"></div>
<div id="subsection3-2"></div>
</div>
一部のタグでは「:」のあとに特定の語句をつけることで、よく使われる属性やその値があらかじめ指定された状態で出力されます。
a:mail<a href="mailto:"></a>
meta:js<meta http-equiv="Content-Script-Type" content="text/javascript" />
html:xs<!DOCTYPE html PUBLIC "-W3CDTD XHTML 1.0 StrictEN" "http:www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
</head>
<body></body>
</html>一部のタグでは末尾に「+」をつけることで、いくつかの子要素を持ったものが出力されます。
ul+<ul>
<li></li>
</ul>
dl+<dl>
<dt></dt>
<dd></dd>
</dl>( )で囲った範囲をグループ化し、そのグループの後に「+」で兄弟要素を書くことで、グループの後に兄弟要素を続けることが出来ます。
(#header h1 a)+(#content #main h2+p*3)+(#footer address)<div id="header">
<h1><a href=""></a></h1>
</div>
<div id="content">
<div id="main">
<h2></h2>
<p></p>
<p></p>
<p></p>
</div>
</div>
<div id="footer">
<address></address>
</div>p+(dl dt+dd)+p<p></p>
<dl>
<dt></dt>
<dd></dd>
</dl>
<p></p>( )で囲った直後に「*」と1~9の数字を書くことで、その数字の分だけグループを複製します。
dl>(dt+dd)*3<dl>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
</dl>attr で指定した名前の属性に、value を値として持つ要素を生成します。
a[title=日本語も使えます]<a href="" title="日本語も使えます"></a>
input:radio[checked]<input type="radio" name="" value="" checked="checked" />
a[href=/image/$.jpg]*3 img.thumb[src=/image/thumb$$-$.jpg][width=80][height=80]*2<a href="/image/1.jpg">
<img src="/image/thumb1-1.jpg" alt="" width="80" height="80" class="thumb" />
<img src="/image/thumb1-2.jpg" alt="" width="80" height="80" class="thumb" />
</a>
<a href="/image/2.jpg">
<img src="/image/thumb2-1.jpg" alt="" width="80" height="80" class="thumb" />
<img src="/image/thumb2-2.jpg" alt="" width="80" height="80" class="thumb" />
</a>
<a href="/image/3.jpg">
<img src="/image/thumb3-1.jpg" alt="" width="80" height="80" class="thumb" />
<img src="/image/thumb3-2.jpg" alt="" width="80" height="80" class="thumb" />
</a>要素の末尾または直後に、その要素が何であるかを示すコメントを自動で挿入します。行数が長くなりそうな要素に指定しておくと、見やすくなるかもしれません。
div#example.section! ul li*3で直後に挿入する設定の場合<div id="example" class="section">
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<!-- div#example.section END -->
ソースに含まれる &、<、>、" の4文字を実態参照に変更した上で出力します。
div#hoge>p.class&<div id="hoge">
<p class="class"></p>
</div>Wrapモードでは、ダイアログに入力したセレクタから生成したHTMLによって、本文の範囲選択した部分を包みこみます。この際、次に示すようなセレクタの書き方で、包み方が変化します。
red(改行)green(改行)blueを選択中に、ダイアログul li a*と入力することで、<ul>
<li><a href="">red</a><a href="">green</a><a href="">blue</a></li>
</ul>
red(改行)green(改行)blueを選択中に、ダイアログにul li* aと入力することで、<ul>
<li><a href="">red</a></li>
<li><a href="">green</a></li>
<li><a href="">blue</a></li>
</ul>red(改行)green(改行)blueを選択中に、ダイアログにul li aと入力することで、<ul>
<li>
<a href="">
red
green
blue
</a>
</li>
</ul>本家 Zen-Coding にあって本マクロにない機能のいくつかは、以下に紹介する秀丸マクロを導入することで実現できると思います。