<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:xhtml="http://www.w3.org/1999/xhtml" ><channel><title>gaspanik weblog &#187; textmate</title> <atom:link href="http://blog.gaspanik.com/tag/textmate/feed" rel="self" type="application/rss+xml" /><link>http://blog.gaspanik.com</link> <description>beat one's brain</description> <lastBuildDate>Tue, 07 Sep 2010 06:02:58 +0000</lastBuildDate> <generator>http://wordpress.org/?v=2.9.2</generator> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.gaspanik.com/tag/textmate/feed" /> <atom:link rel='hub' href='http://blog.gaspanik.com/?pushpress=hub' /> <cloud domain='blog.gaspanik.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' /> <item><title>Zen-Codingでできるあんなことこんなこと</title><link>http://blog.gaspanik.com/textmate-with-zencoding-ext</link> <comments>http://blog.gaspanik.com/textmate-with-zencoding-ext#comments</comments> <pubDate>Mon, 01 Feb 2010 06:21:41 +0000</pubDate> <dc:creator>[cipher]</dc:creator> <category><![CDATA[articles]]></category> <category><![CDATA[editor]]></category> <category><![CDATA[productivity]]></category> <category><![CDATA[textmate]]></category> <category><![CDATA[tips]]></category> <category><![CDATA[webdesign]]></category><guid isPermaLink="false">http://blog.gaspanik.com/?p=2564</guid> <description><![CDATA[先日超速コーディング？としてTextMateにZen-Codingを追加したコーディング手法の概要を紹介しました。で、実はZen-Coding、前回紹介した入力方法だけではありません。 HTMLのストラクチャ的なものが [...]]]></description> <content:encoded><![CDATA[<p>先日<a href="http://blog.gaspanik.com/coding-with-textmate-and-zencoding">超速コーディング？</a>としてTextMateにZen-Codingを追加したコーディング手法の概要を紹介しました。で、実はZen-Coding、前回紹介した入力方法だけではありません。</p><p>HTMLのストラクチャ的なものがわかっていれば、特定の記述をして展開すると一気にコードが書けちゃったりします（どちらかと言えば、こっちが本当のZen-Codingなんでしょう）。</p><p><img src="http://blog.gaspanik.com/wp-content/uploads/2010/02/textmate-zen-001.png" alt="textmate-with-zen" title="textmate-with-zen" width="450" height="253" class="alignnone size-full wp-image-2563" /></p><p>ということで、今回はその特定の記述とやらの話をしてみましょう。ここまで使えるようになってくると実に速い…（はず 笑）。</p><span id="more-2564"></span><h3>文書構造がわかってれば、1行書いて一気に展開できる</h3><p>Zen-Codingは、前回紹介したような登録された略語を使ってHTMLとCSSのコードを展開する使い方だけでなく、特定の記述を使って構造を書き上げて一気に展開することができます。TextMateを使っている方は<a href="http://code.google.com/p/zen-coding/downloads/list">こちらのリスト</a>にある「Zen.Coding-TextMate.v0.5.zip」も忘れずに入れておきましょう。</p><p>たとえば、上図の中段下あたりにある</p><p><code>div#coding&gt;h1#textmate-with-zen+p.tagline</code></p><p>を入力して、「Cmd+E（<a href="http://onecrayon.com/tea/coda/">Coda版</a>とDWのMXP版は、Ctrl+,）」で展開すると下記のコードがどーんと入ります。</p><p><code>&lt;div id="coding"&gt;<br /> &nbsp;&lt;h1 id="textmate-with-zen"&gt;&lt;/h1&gt;<br /> &nbsp;&lt;p class="tagline"&gt;&lt;/p&gt;<br /> &lt;/div&gt;</code></p><p>この書式を見てすぐ気付く方もいると思いますが、まるでCSSのセレクタを書くかのように、「#」でid属性、「.」でclass属性、「&gt;」で階層、「+」で隣接している要素を繋げられます。つまり、HTMLの文書構造が明確で頭の中で書くことが決まっている場合は、1行で書いて展開した方が圧倒的に速いってわけです。<br /> ※idは「Cmd+3」、classは「Cmd+2」のショートカットもある。</p><h3>同じ事の繰り返しは「*」、数字を付けるなら「$」</h3><p>構造がわかっていればこのように簡単に展開できますが、HTML文書というのは同じ要素の繰り返しというのも結構な確率で登場します。たとえば、ナビゲーションのli要素だったり、定型のdivとhとpの繰り返しだったり。</p><p>そんな時は「*繰り返す回数」を付け加えればオッケイ。</p><p><code>ul#nav&gt;li*3&gt;a</code></p><p>と書いて展開すれば、</p><p><code>&lt;ul id="nav"&gt;<br /> &nbsp;&lt;li&gt;&lt;a href=""&gt;&lt;/a&gt;&lt;/li&gt;<br /> &nbsp;&lt;li&gt;&lt;a href=""&gt;&lt;/a&gt;&lt;/li&gt;<br /> &nbsp;&lt;li&gt;&lt;a href=""&gt;&lt;/a&gt;&lt;/li&gt;<br /> &lt;/ul&gt;</code></p><p>こんな感じでコードが展開されます。TABキー（Shift+TAB）で、それぞれのhref属性とa要素の中身を移動できるので入力もスムーズィー。楽勝です（笑）。</p><p>まだあります。時には、連続する同じ要素にidやclass属性を割り当てて、それぞれの属性値に連番を付与しておきたい、といったことも考えられます。そんな時は変数的な意味の「$」を付ければ、自動的に番号が振られます。素敵ですね。</p><p>もろもろを組み合わせるとこんな感じになります。</p><p><code>div#box$*3&gt;h3+p*2</code></p><p>と書いて展開すれば、</p><p><code>&lt;div id="box1"&gt;<br /> &nbsp;&lt;h3&gt;&lt;/h3&gt;<br /> &nbsp;&lt;p&gt;&lt;/p&gt;<br /> &lt;/div&gt;<br /> &lt;div id="box2"&gt;<br /> &nbsp;&lt;h3&gt;&lt;/h3&gt;<br /> &nbsp;&lt;p&gt;&lt;/p&gt;<br /> &lt;/div&gt;<br /> &lt;div id="box3"&gt;<br /> &nbsp;&lt;h3&gt;&lt;/h3&gt;<br /> &nbsp;&lt;p&gt;&lt;/p&gt;<br /> &lt;/div&gt;<br /> </code></p><p>ほーら、使いたくなってきたでしょー（笑）。</p><p>というわけで、前回エントリーの続きということで、単純な略語ベースの展開だけではなくZen-Codingをさらに使いこなすためのいくつかの書式の紹介でした。ほかの記述については<a href="http://code.google.com/p/zen-coding/wiki/ZenHTMLSelectorsEn">こちら</a>で確認してみてください。</p><p>※一応今回もまた簡単なデモをアップしておきました（どう書こうかなって思いながらなので、なかなか指が進んでませんが 笑）。</p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9120994&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9120994&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00adef&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object><p><a href="http://vimeo.com/9120994">Zen-Coding Ext.</a> from <a href="http://vimeo.com/cipher">komori, masaaki</a> on <a href="http://vimeo.com">Vimeo</a>.</p>]]></content:encoded> <wfw:commentRss>http://blog.gaspanik.com/textmate-with-zencoding-ext/feed</wfw:commentRss> <slash:comments>12</slash:comments> <xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.gaspanik.com/textmate-with-zencoding-ext" /> </item> </channel> </rss>
<!-- Served from: blog.gaspanik.com @ 2010-09-09 18:21:13 by W3 Total Cache -->