Zen Coding の使い方

最近、「EmEditor は Zen Coding に対応していますか?」という質問をユーザーの皆様からいただくようになりました。Zen Coding は、HTML などのコードを革新的に速く書くためのライブラリです。たとえば、次のようなテキストを書いて

div#page>div.logo+ul#navigation>li*5>a

変換用のキーを押すと、

<div id="page">
	<div class="logo"></div>
	<ul id="navigation">
		<li><a href=""></a></li>
		<li><a href=""></a></li>
		<li><a href=""></a></li>
		<li><a href=""></a></li>
		<li><a href=""></a></li>
	</ul>
</div>

のように書き換わります。このように、あらかじめ HTML の構文がわかっている場合、Zen Coding を使用すると、すべて一文字ずつ入力するのに比べ、格段に速く入力することができるのです。

Zen Coding と親和性が高い EmEditor

Zen Coding は、ロシアの Sergey Chikuyonok 氏によって作成されていますが、GNU ライセンスとして公開されています。このライブラリのコアの部分は、JavaScript と Python 2.5+ の 2 つの言語で開発されています。そして、さまざまなテキスト エディタで使えるように、コアの部分とインターフェイスの部分を切り離して設計されているところが良い点です。つまり、実装するテキスト エディタによって、Zen Coding とテキスト
エディタの間のインターフェースの部分だけを書き換えることにより、共通なコアを再使用できるように設計されています。これによって、たとえば、テキスト エディタによって機能の実装が異なったり、不具合が発生したり、という問題を最小限にしています。

EmEditor Professional は、JavaScript によるマクロをサポートしているため、実は、Zen Coding のサポートを行いやすいと言えます。EmEditor が、Zen Coding のサポートを行うためには、Zen Coding のインターフェイスの部分を書き換えるだけで済み、コアの部分はほとんど変更せずに済みます。実際、筆者は、Zen Coding について調べ始めてから 2 日目で、EmEditor
への移植を完成させました。一度、インターフェイスの部分ができあがってしまえば、将来、Zen Coding のバージョンが上がっても、コアの部分だけを入れ替えるだけで済むので、次からの移植はさらに速くなります。つまり、Zen Coding と EmEditor は、親和性が高いため、Zen Coding の最新の機能を、不具合や未実装などの心配なく使用することができます。

Zen Coding のダウンロードとインストール

EmEditor 用の Zen Coding は、ライブラリ – スニペットよりダウンロードしていただけます。この補足説明にインストール方法が書かれていますので、スニペットを利用する方法でインストールします。すると、次のように、スニペット カスタム バーに Zen Coding というフォルダができ、その中に 10
個のアクションが登録されていることがわかります。これらのアクションは、カッコ内に記述されているショートカット キーを入力することにより、実行することができます。

省略形の展開

Zen Coding の 10 種類のアクションのうち、もっとも頻繁に使用するのは、「省略形を展開」というアクションになります。このアクションは、入力した省略形を通常の HTML に展開するもので、ショートカット キーは F12 に割り当てられています。このアクションを利用するには、省略形を入力して、F12 を押すだけです。省略形は、CSS セレクタの構文に似ています。たとえば、

div#name

と入力して F12 を押すと、

<div id="name"></div>

と展開されます。つまり、# は、HTML 要素の id を指定するのに使用します。また、同様に、# の代わりに . を使用すると class を指定することができます。たとえば、

div.name

と入力して F12 を押すと、

<div class="name"></div>

と展開されます。

# や . の代わりに > を使用すると、今度は、チャイルドの要素を指定することになります。たとえば、

table>tr>td

を展開すると、

<table>
	<tr>
		<td></td>
	</tr>
</table>

と展開されます。

+ を使用すると、2 個以上の要素を並べて展開します。たとえば

 p.one+p.two

を展開すると、

<p class="one"></p>
<p class="two"></p>

となります。

p[title] というように、括弧 [] で囲んで属性を指定することもできます。たとえば、

p[title]

を展開すると、

<p title=""></p>

となります。

さらに、Zen Coding には、フィルタという機能があります。フィルタを指定するには、| を使います。たとえば、

p.title|e

と指定して展開すると、

&lt;p class="title"&gt;&lt;/p&gt;

となります。つまり e というフィルタは、XML ではそのまま使用できない <、>、& の 3 文字をエスケープします。他にもさまざまなフィルタが利用できます。

複数の似た要素を繰り返し記述したいこともあるでしょう。そういう場合、* と数字で、繰り返し回数を指定することができます。たとえば

 p*3

として展開すると、

<p></p>
<p></p>
<p></p>

となります。さらに、$ を使用して、id 名や class 名に順番に並んだ数字を含めることもできます。たとえば、

p.name-$*3

として展開すると、

<p class="name-1"></p>
<p class="name-2"></p>
<p class="name-3"></p>

となります。

さらに、ul+、table+、dl+ などという特別な省略形も存在し、入力する手間を減らしてくれます。たとえば、

ul+

として展開すると、

<ul>
	<li></li>
</ul>

となります。

詳細については、

を参考にしてください。

その他にも、Zen Coding には、さまざまなスニペットが用意されています。たとえば、EmEditor 側で、HTML の設定が選択されているときに、

html:4t

と入力して展開すると、

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
	<title></title>
</head>
<body>

</body>
</html>

と展開されます。

また、CSS の設定のときに、

@i

と入力して F12 を押すと、

@import url();

と展開されます。

使用できるスニペット一覧は、

を参照してください。

また、便利な Zen Coding のチートシートも公開されています。

をご覧ください。

その他の機能

省略形の展開は、Zen Coding の機能のほんの一部に過ぎません。詳しくは、

をお読みください。

以上のように、Zen Coding を使用すると、HTML のコード開発の効率が著しく良くなることがわかります。是非、Zen Coding を活用して HTML、XML などの開発を楽しんでください。