<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Big Sky</title>
    <link>http://mattn.kaoriya.net/</link>
    <description>システム開発屋がひっそり語るぼやき</description>
    <language>ja</language>
    <generator>blosxom/2.1.2</generator>
    <atom:link rel="self" href="http://mattn.kaoriya.net/index.rss" type="application/rss+xml" />
    <atom:link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
   <item>
     <title>VimでFizzBuzz...いやBrainfuck</title>
     <pubDate>Fri, 12 Mar 2010 00:55:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/vim/20100311235228.htm</link>
     <category>vim</category><category>brainfuck</category><category>fizzbuzz</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/vim/20100311235228.htm</guid>
     <description>
先日、「はてなFizzBuzzグループ」に入って、さっそくvimのFizzBuzzを書いたのですが...&lt;br /&gt;

&lt;blockquote class=&quot;quote&quot;&gt;
  &lt;a href=&quot;http://fizzbuzz.g.hatena.ne.jp/mattn/20100304&quot;&gt;2010-03-04 - mattnの日記 - fizzbuzzグループ&lt;/a&gt;&lt;br /&gt;
  &lt;blockquote class=&quot;code&quot;&gt;
  for v in range(1,100)|ec v%15?v%3?v%5?v :&amp;quot;Buzz&amp;quot;:&amp;quot;Fizz&amp;quot;:&amp;quot;FizzBuzz&amp;quot;|endfo&lt;br /&gt;
  &lt;/blockquote&gt;
  &lt;cite&gt;http://fizzbuzz.g.hatena.ne.jp/mattn/20100304&lt;/cite&gt;
&lt;/blockquote&gt;

数日後にid:tyruさんにgolfで抜かされた！&lt;br /&gt;

&lt;blockquote class=&quot;quote&quot;&gt;
  &lt;a href=&quot;http://fizzbuzz.g.hatena.ne.jp/tyru/20100310&quot;&gt;Vim script - id:tyruが毎日FizzBuzzを一生懸命書く日記 - fizzbuzzグループ&lt;/a&gt;&lt;br /&gt;
  &lt;blockquote class=&quot;code&quot;&gt;
  for i in range(1,100)|ec[[i,&amp;quot;Buzz&amp;quot;],[&amp;quot;Fizz&amp;quot;,&amp;quot;FizzBuzz&amp;quot;]][i%3&amp;lt;1][i%5&amp;lt;1]|endfo&lt;br /&gt;
  &lt;/blockquote&gt;
  &lt;cite&gt;http://fizzbuzz.g.hatena.ne.jp/tyru/20100310&lt;/cite&gt;
&lt;/blockquote&gt;

これはくやしい！&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ということで、もっかいFizzBuzzにチャレンジ。&lt;br /&gt;
ただこのgolf度はちょっとやそっとじゃ抜けないだろうし、そのままやっても面白くないのでFizzBuzzやめてBrainfuckやってみた。&lt;br /&gt;
コードはこんな感じ。&lt;br /&gt;
&lt;p&gt;&lt;a href=&quot;http://mattn.kaoriya.net/software/vim/20100311235228.htm&quot; class=&quot;seemore&quot;&gt;続きを読む...&lt;/a&gt;&lt;/p&gt;

</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>zen-codingの殆どの機能をzencoding.vimに取り込んだ。</title>
     <pubDate>Tue, 09 Mar 2010 03:14:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/vim/20100306021632.htm</link>
     <category>zencoding.vim</category><category>zen-coding</category><category>zencoding</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/vim/20100306021632.htm</guid>
     <description>
&lt;img src=&quot;http://mattn.kaoriya.net/images/zencoding-vim-logo.png&quot; align=&quot;right&quot; title=&quot;禅&quot; alt=&quot;禅&quot; /&gt;全国１億８千万人のzen-codingファンの皆様、如何お過ごしでしょうか。&lt;br /&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/software/vim/20100222103327.htm&quot;&gt;先日の記事&lt;/a&gt;で&lt;a href=&quot;http://code.google.com/p/zen-coding&quot; class=&quot;external&quot; taret=&quot;_blank&quot;&gt;zen-coding&lt;/a&gt;をpure vimscriptに移植した「&lt;a href=&quot;http://github.com/mattn/zencoding-vim&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;zencoding.vim&lt;/a&gt;」をご紹介させて頂きました。&lt;br /&gt;
あの時は略語の展開(Expand Abbreviation)しか機能がなく物足りなかったかもしれません。まぁ殆どの移植品はExpand Abbreviationしか無いのですが。&lt;br /&gt;
&lt;br /&gt;
zen-codingには他どんな機能があるかというと、実はまだ便利な機能があったりします。
&lt;a href=&quot;http://code.google.com/p/zen-coding/wiki/Actions&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;オフィシャルのサイト&lt;/a&gt;によると&lt;br /&gt;
&lt;ul&gt;
	&lt;li&gt;Expand Abbreviation&lt;/li&gt;
	&lt;li&gt;Wrap with Abbreviation&lt;/li&gt;
	&lt;li&gt;Balance Tag Inward/Outward&lt;/li&gt;
	&lt;li&gt;Go to Next/Previous Edit Point&lt;/li&gt;
	&lt;li&gt;Update Image Size&lt;/li&gt;
	&lt;li&gt;Merge Lines&lt;/li&gt;
	&lt;li&gt;Remove Tag&lt;/li&gt;
	&lt;li&gt;Split/Join Tag&lt;/li&gt;
	&lt;li&gt;Toggle Comment&lt;/li&gt;
&lt;/ul&gt;
とあります。日本とだと以下のサイトが分かりやすいです。&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://designblog.ecstudio.jp/htmlcss/zen-coding-shortcut-key.html&quot;&gt;Zen-Codingのショートカットをまとめてみました - EC studio デザインブログ&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;前回の記事ではZen-Codingの導入方法について解説しました。今回はZen-Codingの機能とそれを実行するためのショートカットの解説をします。&lt;/p&gt;
&lt;cite&gt;http://designblog.ecstudio.jp/htmlcss/zen-coding-shortcut-key.html&lt;/cite&gt;
&lt;/blockquote&gt;
以前までのzencoding.vimが対応していたのは一番上のExpand Abbreviationだけです。&lt;br /&gt;
ここ数日、zencoding.vimのコードを&lt;a href=&quot;http://github.com/mattn/zencoding-vim/commits/master&quot;&gt;弄りまくって&lt;/a&gt;、残りのあと少しで100移植出来る所まで来ました。&lt;br /&gt;
&lt;br /&gt;
以下チュートリアル的なものを書いておきます。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;subtitle&quot;&gt;Expand Abbreviation&lt;/h3&gt;
まずは略語展開。もう皆さん知ってると思いますが&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
div&amp;gt;p#foo$*3&amp;gt;a{こんにちわ}&lt;br /&gt;
&lt;/blockquote&gt;
と書いて&lt;code&gt;&amp;lt;c-z&amp;gt;,&lt;/code&gt;(コントロールとzを押してカンマ)をタイプすると
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;foo1&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;こんにちわ&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;foo2&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;こんにちわ&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;foo3&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;こんにちわ&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
と展開してくれる機能です。括弧によるグルーピングもサポートしています。&lt;br /&gt;
&lt;br /&gt;

&lt;h3 class=&quot;subtitle&quot;&gt;Wrap with Abbreviation&lt;/h3&gt;
ラップを作成する略語展開です。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
おはよう&lt;br /&gt;
こんにちわ&lt;br /&gt;
こんばんわ&lt;br /&gt;
&lt;/blockquote&gt;
とあるテキストをビジュアル選択して&lt;code&gt;&amp;lt;c-z&amp;gt;,&lt;/code&gt;をタイプすると「Tag:」とタグを聞かれます。ここにラップするタグを記述します。
&lt;blockquote class=&quot;code&quot;&gt;
Tag: bq
&lt;/blockquote&gt;
とすると
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;blockquote&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
おはよう&lt;br /&gt;
こんにちわ&lt;br /&gt;
こんばんわ&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;blockquote&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
といった感じにラップしてくれます。また
&lt;blockquote class=&quot;code&quot;&gt;
Tag: ul&amp;gt;li*&amp;gt;a&amp;gt;span
&lt;/blockquote&gt;
とすると
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;ul&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;おはよう&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;こんにちわ&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;こんばんわ&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;ul&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
こんな感じになります。便利す。&lt;br /&gt;
&lt;br /&gt;

&lt;h3 class=&quot;subtitle&quot;&gt;Balance Tag Inward/Outward&lt;/h3&gt;
タグの外側、内側を選択します。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;ul&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;おはよう&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;_&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;こんにちわ&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;こんばんわ&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;ul&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
上記&quot;_&quot;の位置にカーソルがある状態で&lt;code&gt;&amp;lt;c-z&amp;gt;d&lt;/code&gt;をタイプすると
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;ul&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;おはよう&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;u&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;こんにちわ&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;こんばんわ&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;span&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;ul&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
こんな感じに選択してくれます。もちろん&lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;の前で実行すると&lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;全体が選択されます。なお、タグの内側で実行するとタグ自身が選択されます。&lt;br /&gt;
これとは逆にタグを含まないで中身のみを選択する場合には&lt;code&gt;&amp;lt;c-z&amp;gt;D&lt;/code&gt;をタイプします。&lt;br /&gt;
&lt;br /&gt;

&lt;h3 class=&quot;subtitle&quot;&gt;Go to Next/Previous Edit Point&lt;/h3&gt;
編集位置へカーソルを移動します。&lt;code&gt;&amp;lt;c-z&amp;gt;n&lt;/code&gt;で空の属性値や中身が空のタグ内側へジャンプします。逆向きは&lt;code&gt;&amp;lt;c-z&amp;gt;N&lt;/code&gt;です。&lt;br /&gt;
&lt;br /&gt;

&lt;h3 class=&quot;subtitle&quot;&gt;Update Image Size&lt;/h3&gt;
IMGタグの画像サイズを更新します。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;img&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&lt;a href=&quot;http://mattn.kaoriya.net/images/logo.png&quot;&gt;http://mattn.kaoriya.net/images/logo.png&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
この様なIMGタグの上で&lt;code&gt;&amp;lt;c-z&amp;gt;i&lt;/code&gt;をタイプするとwidth/heigth属性を埋めてくれます。ローカルのファイルだと絶対パスもしくは編集中のファイルからの相対パスが扱え、URLも対応しています。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;img&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&lt;a href=&quot;http://mattn.kaoriya.net/images/logo.png&quot;&gt;http://mattn.kaoriya.net/images/logo.png&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;96&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;96&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
こんな感じです。ちなみにvimが不得意とする&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;img&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;foo&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;logo.png&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;/&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;img&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;github-logo.png&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;bar&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;img&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&lt;a href=&quot;http://mattn.kaoriya.net/images/logo.png&quot;&gt;http://mattn.kaoriya.net/images/logo.png&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
この様な１行複数個のIMGタグでも正しく動作します。&lt;br /&gt;
この画像ファイルを扱う部分だけperl拡張を使いました。モジュールとしてはImage::Infoが入っていれば動くはずです。ちなみにこの機能さえ使わなければ、別にperl拡張が入っていなくても良いです。&lt;br /&gt;
&lt;br /&gt;

&lt;h3 class=&quot;subtitle&quot;&gt;Merge Lines&lt;/h3&gt;
これはvimだけの機能で出来るので実装していません。ビジュアル選択して&lt;code&gt;J&lt;/code&gt;ですね。&lt;br /&gt;
&lt;br /&gt;

&lt;h3 class=&quot;subtitle&quot;&gt;Remove Tag&lt;/h3&gt;
以下の様なHTMLで「cursor is here」の部分にカーソルがあった場合
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;foo&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;cursor is here&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
&lt;code&gt;&amp;lt;c-z&amp;gt;k&lt;/code&gt;をタイプすると
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;foo&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
となり、さらに&lt;code&gt;&amp;lt;c-z&amp;gt;k&lt;/code&gt;をタイプすると
&lt;blockquote class=&quot;code&quot;&gt;
&lt;br /&gt;
&lt;/blockquote&gt;
となる機能です。&lt;br /&gt;
&lt;br /&gt;

&lt;h3 class=&quot;subtitle&quot;&gt;Split/Join Tag&lt;/h3&gt;
先ほどと同様のカーソル位置で
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;foo&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;cursor is here&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
&lt;code&gt;&amp;lt;c-z&amp;gt;j&lt;/code&gt;をタイプすると
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;foo&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
となります。なお、このdivタグの上で再度タイプすると今度は
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;foo&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
と分割されます。&lt;br /&gt;
&lt;br /&gt;

&lt;h3 class=&quot;subtitle&quot;&gt;Toggle Comment&lt;/h3&gt;
タグの上で&lt;code&gt;&amp;lt;c-z&amp;gt;/&lt;/code&gt;をタイプするとそのタグ全体をコメントアウトしてくれます。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;blockquote&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;aaa&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;blockquote&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
このHTMLのaの上でタイプすると
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;blockquote&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Comment&quot;&gt;&amp;lt;!&lt;/span&gt;&lt;span class=&quot;Comment&quot;&gt;-- &amp;lt;a href=&amp;quot;&amp;quot;&amp;gt;aaa&amp;lt;/a&amp;gt; --&lt;/span&gt;&lt;span class=&quot;Comment&quot;&gt;&amp;gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;blockquote&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
となり、aの前あたりでタイプすると
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Comment&quot;&gt;&amp;lt;!&lt;/span&gt;&lt;span class=&quot;Comment&quot;&gt;-- &amp;lt;blockquote&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Comment&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;a href=&amp;quot;&amp;quot;&amp;gt;aaa&amp;lt;/a&amp;gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Comment&quot;&gt;&amp;lt;/blockquote&amp;gt; --&lt;/span&gt;&lt;span class=&quot;Comment&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
となります。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;subtitle&quot;&gt;おまけ１&lt;/h3&gt;
URLの上で&lt;code&gt;&amp;lt;c-z&amp;gt;a&lt;/code&gt;をタイプするとHTMLを取得してきてアンカータグを作ってくれます。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
http://www.google.com/&lt;br /&gt;
&lt;/blockquote&gt;
これが
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&lt;a href=&quot;http://www.google.com/&quot;&gt;http://www.google.com/&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;Google&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
こうなります。&lt;br /&gt;
&lt;br /&gt;
&lt;h3 class=&quot;subtitle&quot;&gt;おまけ2&lt;/h3&gt;
おまけ1とさほど変わりませんが...
URLの上で&lt;code&gt;&amp;lt;c-z&amp;gt;A&lt;/code&gt;をタイプすると本文抽出して引用文を作ってくれます。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
http://www.google.com/&lt;br /&gt;
&lt;/blockquote&gt;
これが
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;blockquote&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;quote&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&lt;a href=&quot;http://www.google.com/&quot;&gt;http://www.google.com/&lt;/a&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;Google&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;br&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;/&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;広告掲載 - ビジネス ソリューション - Google について - Google.com in English&lt;span class=&quot;Special&quot;&gt;&amp;amp;copy;&lt;/span&gt;2010 - プライバシー ...&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;cite&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;a href=&quot;http://www.google.com/&quot;&gt;http://www.google.com/&lt;/a&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;cite&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;blockquote&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
こうなります。ほぼ俺様用！&lt;br /&gt;
&lt;br /&gt;
100% zen-coding 互換まであと少しです。&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
	&lt;a href=&quot;http://github.com/mattn/zencoding-vim&quot;&gt;mattn&apos;s zencoding-vim at master - GitHub&lt;/a&gt;&lt;br /&gt;
	&lt;p&gt;zen-coding for vim: http://code.google.com/p/zen-coding/&lt;/p&gt;
	&lt;cite&gt;http://github.com/mattn/zencoding-vim&lt;/cite&gt;
&lt;/blockquote&gt;

&lt;br /&gt;
&lt;div class=&quot;awsxom&quot;&gt;
&lt;a href=&quot;http://www.amazon.co.jp/exec/obidos/ASIN/1847190936/ref=nosim/bigsky-22&quot;&gt;
&lt;img src=&quot;http://ecx.images-amazon.com/images/I/41Snt3R6aIL._SL160_.jpg&quot; align=&quot;left&quot; hspace=&quot;5&quot; border=&quot;0&quot; alt=&quot;Hacking Vim: A Cookbook to Get the Most Out of the Latest Vim Editor&quot; class=&quot;image&quot; /&gt;
&lt;strong&gt;Hacking Vim: A Cookbook to Get the Most Out of the Latest Vim Editor&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
Kim Schulz&lt;br /&gt;
Packt Publishing / ￥ 3,703 (2007-05-30)&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
発送可能時間：通常2～3週間以内に発送&lt;br /&gt;
&lt;br clear=&quot;all&quot; /&gt;
&lt;/div&gt;

</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>perldocのbash-completionが激しく便利でうれしょん出た。</title>
     <pubDate>Tue, 02 Mar 2010 03:28:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/lang/perl/20100302031129.htm</link>
     <category>perl</category><category>bash</category><category>bash-completion</category><category>うれしょん</category><category>perldoc</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/lang/perl/20100302031129.htm</guid>
     <description>
タイトルは釣りです。&lt;br /&gt;
perlでは一般的にperldocを使って調べ物をする事が殆どですが
&lt;blockquote class=&quot;quote&quot;&gt;
あれー、あのモジュールなんだっけ...IO:: 忘れた。
&lt;/blockquote&gt;
とか
&lt;blockquote class=&quot;quote&quot;&gt;
IO:: の下辺りに似たモジュールあったよなー
&lt;/blockquote&gt;
なんて事が結構あったりするのですが(私だけかも)、今日もSys::SendfileのAuthorから「チミが送ってくれたpatchに対して僕が書いたtestがWindowsで通らないんだけど、何か分かるかい？」とメールが来てて
&lt;blockquote class=&quot;quote&quot;&gt;
それ、以前&lt;a href=&quot;http://perl5.git.perl.org/perl.git/commitdiff/20caf59dc5a2137cdf1de6dae458da063417a8d2&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;ワテがp5pに送ったpatch&lt;/a&gt;の件ちゃいますやろか、確かIO:: ...えーっと...
&lt;/blockquote&gt;
ってなってしまった訳です。&lt;br /&gt;
なんか良くある事なので解決出来ないかなぁと思っていた所、見つけてしまいました。perldoc-completeを。&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://github.com/ap/perldoc-complete&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;ap&apos;s perldoc-complete at master - GitHub&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;A bash completion helper for perldoc&lt;/p&gt;
&lt;cite&gt;http://github.com/ap/perldoc-complete&lt;/cite&gt;
&lt;/blockquote&gt;
パスの通った所に perldoc-complete を置いて
&lt;blockquote class=&quot;code&quot;&gt;
complete -C perldoc-complete -o nospace -o default perldoc&lt;br /&gt;
&lt;/blockquote&gt;
を .bashrc に書いておくと...&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
# perldoc IO:: &lt;em&gt;ここでタブ押す&lt;/em&gt;&lt;br /&gt;
AIO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;File&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pipe&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Socket&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Wrap&lt;br /&gt;
AtomicFile&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Handle&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Poll&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Socket::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WrapTie&lt;br /&gt;
Capture&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Handle::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pty&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Zlib&lt;br /&gt;
Capture::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InnerFile&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Scalar&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stringy&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
CaptureOutput&amp;nbsp;&amp;nbsp;Lambda&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ScalarArray&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tty&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
Compress::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Lambda::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Seekable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tty::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
Dir&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Lines&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Select&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Uncompress::&amp;nbsp;&amp;nbsp;&lt;br /&gt;
# perldoc IO::&lt;br /&gt;
&lt;/blockquote&gt;
きたーーー！&lt;br /&gt;
常用確定しました。&lt;br /&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>Google Reader Full FeedをFirefox3.6対応した。</title>
     <pubDate>Mon, 01 Mar 2010 00:14:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/firefox/greasemonkey/20100301000839.htm</link>
     <category>greasemonkey</category><category>googlereaderfullfeed</category><category>google reader full feed</category><category>firefox</category><category>grff</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/firefox/greasemonkey/20100301000839.htm</guid>
     <description>
といっても、やってもらったのですが！&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://fxwiki.blog63.fc2.com/blog-entry-237.html&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;勝手に改造版 Google Reader Full Feed - Firefox更新情報Wikiブログ&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;以前のエントリーで、GreasemonkeyスクリプトのGoogle Reader Full FeedがFirefox 3.6（Beta）では正しく動作しないことを書きましたが、どうにかならないかなぁと思いスクリプトをいじって試行錯誤してみたら動作するようになったので、その改造版を載せておきますね。&lt;/p&gt;
&lt;cite&gt;http://fxwiki.blog63.fc2.com/blog-entry-237.html&lt;/cite&gt;
&lt;/blockquote&gt;
すみません。遅くなりました。&lt;br /&gt;
ありがたくcommitさせて頂きました。codereposにあるので手動で入れる方は&lt;a href=&quot;http://svn.coderepos.org/share/lang/javascript/userscripts/googlereaderfullfeed.user.js&quot;&gt;ココ&lt;/a&gt;から。Wescript使ってる人は、勝手にアップデートされると思います。&lt;br /&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>zen-coding for vim を pure vimscript だけで書いてみた。</title>
     <pubDate>Mon, 22 Feb 2010 10:56:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/vim/20100222103327.htm</link>
     <category>vim</category><category>zencoding</category><category>zen-coding</category><category>sparkup</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/vim/20100222103327.htm</guid>
     <description>
&lt;img src=&quot;http://code.google.com/p/zen-coding/logo?logo_id=1257697522&quot; align=&quot;right&quot; /&gt;
私も結構長くvimを使ってきましたが、実はsnippet系やsorround系のプラグインは殆ど使っていません。理由は入力の規則が多様すぎて覚えられないのと、それくらい手で入力出来るんじゃないか...と思っていたのが理由でもあります。&lt;br clear=&quot;all&quot; /&gt;
sorround.vimなんかは何度か常用をチャレンジしてみましたが、結局諦めました。&lt;br /&gt;
先日、zen-codingを見つけ、「へー便利そうだなぁ」と思ったと同時にこのくらいならvimscript(pure vimscript)だけで書けるな...と思ったので書いてみました。&lt;br /&gt;
と言っても&lt;a href=&quot;http://code.google.com/p/zen-coding/#Partial_support_(&amp;quot;Expand_Abbreviation&amp;quot;_only)&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;Emacsへの移植なんか&lt;/a&gt;と同様に「Expand Abbreviation」だけです。&lt;br /&gt;
正直言うと&lt;a href=&quot;http://code.google.com/p/zen-coding&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;zen-codingのプロジェクトページ&lt;/a&gt;にvimがラインナップされていなかったのがキッカケだったりもしますが...。ただ、後から知ったのですが&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=2540&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;snipMate&lt;/a&gt;という物でzen-codingらしき事が出来るらしく、また&lt;a href=&quot;http://github.com/rstacruz/sparkup&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;sparkup&lt;/a&gt;というプラグイン(python拡張使用)でzen-codingと同等の事が出来るらしいのです。&lt;br /&gt;
しまった...とも思ったのですが残念ながらそれを知ったのが完成間近だったので、思いっきり後出しジャンケンになってしまいました。&lt;br /&gt;
でももったいなかったので紹介しておきます。&lt;br /&gt;
&lt;br /&gt;
zen-codingとはHTML/CSSを入力するのに便利な機能で、どんな物かは&lt;a href=&quot;http://b.hatena.ne.jp/t/zencoding&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;この辺&lt;/a&gt;を見てもらえると分かるかと思います。&lt;br/&gt;
以下、vim版の動作として紹介します。&lt;br /&gt;
&lt;em&gt;キーバインドはzen-codingの移植先エディタによって異なります。&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
例えば、&lt;b&gt;「よーしパパ、今日はHTML5書くぞ！」&lt;/b&gt;って時には
&lt;blockquote class=&quot;code&quot;&gt;
html:5&lt;b&gt;_&lt;/b&gt;
&lt;/blockquote&gt;
&lt;em&gt;&quot;&lt;b&gt;_&lt;/b&gt;&quot;はカーソル位置(挿入モード)です。&lt;/em&gt;&lt;br /&gt;
までタイプして&lt;code&gt;&amp;lt;c-z&amp;gt;,&lt;/code&gt;とタイプすると
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Comment&quot;&gt;&amp;lt;!DOCTYPE HTML&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;lang&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;en&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;head&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;PreProc&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;PreProc&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;meta&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;charset&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;head&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;_&lt;/b&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;body&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
こんな感じに展開されてママもご機嫌です。これだけだと単なるsnippet機能でしかありませんが、例えば&lt;b&gt;「じゃぁ今度はid属性が&quot;foo&quot;のDIVにclass属性が連番でbar1,bar2,bar3ってなる様なアンカー作るぞ！」&lt;/b&gt;って時には
&lt;blockquote class=&quot;code&quot;&gt;
div#foo &amp;gt; a.bar$*3&lt;br /&gt;
&lt;/blockquote&gt;
とタイプして、おもむろに&lt;code&gt;&amp;lt;c-z&amp;gt;,&lt;/code&gt;をタイプします。すると&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;foo&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;bar1&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;b&gt;_&lt;/b&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;bar2&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;bar3&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
と展開されママもニコニコ、もう夫婦円満間違いなしです。&lt;br /&gt;
zen-codingとしてはほぼ完成してます。ただ上記で言った様にsparkupを見つけて悔しかったのでsparkupが採用している拡張記法もサポートしてみました。&lt;br /&gt;
たとえば
&lt;blockquote class=&quot;code&quot;&gt;
a[href=index.html]{Home}&lt;br /&gt;
&lt;/blockquote&gt;
こんなのが
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;index.html&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;Underlined&quot;&gt;Home&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
この様に展開されたり
&lt;blockquote class=&quot;code&quot;&gt;
#header &amp;gt; ul &amp;gt; li &amp;lt; p{Footer}&lt;br /&gt;
&lt;/blockquote&gt;
こんなのが
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;Type&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;header&amp;quot;&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;ul&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;b&gt;_&lt;/b&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;li&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;ul&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;Footer&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;p&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;Statement&quot;&gt;div&lt;/span&gt;&lt;span class=&quot;Identifier&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;
こんな風に展開されたりします。一応、現状sparkupと同様にzen-codingの上位互換でありながら、sparkupの拡張記法も使える様にしました。&lt;br /&gt;
更に変数 g:user_zen_settings を設定する事で自前の snippet や展開式を書く事が出来ます。&lt;br /&gt;
例えばperlであれば&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Statement&quot;&gt;let&lt;/span&gt;&amp;nbsp;g:user_zen_settings&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;=&lt;/span&gt;&amp;nbsp;{&lt;br /&gt;
&lt;span class=&quot;Special&quot;&gt;\&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&apos;perl&apos;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;{&lt;br /&gt;
&lt;span class=&quot;Special&quot;&gt;\&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&apos;indentation&apos;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&apos;&amp;nbsp;&amp;nbsp;&apos;&lt;/span&gt;,&lt;br /&gt;
&lt;span class=&quot;Special&quot;&gt;\&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&apos;aliases&apos;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;{&lt;br /&gt;
&lt;span class=&quot;Special&quot;&gt;\&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&apos;req&apos;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;require &apos;|&apos;&amp;quot;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Special&quot;&gt;\&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&lt;br /&gt;
&lt;span class=&quot;Special&quot;&gt;\&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&apos;snippets&apos;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;{&lt;br /&gt;
&lt;span class=&quot;Special&quot;&gt;\&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&apos;use&apos;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;use strict\nuse warnings\n\n&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&lt;span class=&quot;Special&quot;&gt;\&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&apos;w&apos;&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;warn \&amp;quot;|\&amp;quot;;&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&lt;span class=&quot;Special&quot;&gt;\&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;span class=&quot;Special&quot;&gt;\&lt;/span&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&lt;span class=&quot;Special&quot;&gt;\&lt;/span&gt;}&lt;br /&gt;
&lt;/blockquote&gt;
こんな風にしておき&lt;br /&gt;
(&lt;em&gt;perl専用のindentationの位置はperlの下です。&lt;/em&gt;)&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
w&amp;lt;c-z&amp;gt;,
&lt;/blockquote&gt;
と挿入モードでタイプすると
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;Statement&quot;&gt;warn&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&lt;b&gt;_&lt;/b&gt;&amp;quot;&lt;/span&gt;;&lt;br /&gt;
&lt;/blockquote&gt;
と展開されてメシウマウマです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
使っているvimでpython拡張が動かなかったり、夫婦仲がピンチって方、お一つどうでしょうか。
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://github.com/mattn/zencoding-vim&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;mattn&apos;s zencoding-vim at master - GitHub&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;zen-coding for vim: http://code.google.com/p/zen-coding/&lt;/p&gt;
&lt;cite&gt;http://github.com/mattn/zencoding-vim&lt;/cite&gt;
&lt;/blockquote&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>デスクトップアプリケーションでも認証可能なOAuth「xAuth」をpythonから試してみた。</title>
     <pubDate>Wed, 17 Feb 2010 01:15:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/lang/python/20100217004716.htm</link>
     <category>xauth</category><category>python</category><category>twitter</category><category>oauth</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/lang/python/20100217004716.htm</guid>
     <description>
TwitterのBasic認証APIは6月で廃止される予定なのですが、OAuthという認証方法はブラウザを起動してユーザに認証して貰わなければなりません。一見flickrアプリケーションの様な認証方法を想定しますが、OAuthはflickr認証の様にサーバから貰ったトークンをブラウザから渡して認証させる様な物ではありません。&lt;br /&gt;
今回OAuthの問題を解決すべくOAuthを拡張した認証方式であるxAuthが取り入れられました。&lt;br /&gt;
詳しくはAPIドキュメントか以下のサイトが分かりやすいかと思います。&lt;br /&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://s-take.blogspot.com/2010/02/twitteroauth-xauth.html&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;s-take Blog.: Twitterによる簡易版OAuth: &quot;xAuth&quot;&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;従来のOAuth認証ではまずアプリケーション（OAuthコンシューマ）がTwitterに接続してRequest Tokenを取得し、認証画面を開いてRequest Tokenを承認させ、承認されたRequest Tokenを使ってAccess TokenとToken Secretを取得することによって各APIにアクセスできるようになります。しかしこれはアプリケーション側の実装が複雑になる上、デスクトップアプリケーションの場合はわざわざWebブラウザへ切り替えなければならず（ブラウザを内包するものもありますが）、ユーザにとっても面倒なものです。&lt;/p&gt;
&lt;cite&gt;http://s-take.blogspot.com/2010/02/twitteroauth-xauth.html&lt;/cite&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://the.hackerconundrum.com/2010/02/sneak-peek-at-twitters-browserless.html&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;the.hackerConundrum: Sneak peek at Twitter&apos;s browserless OAuth credentials exchange method&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;Over the past couple of months the Twitter API Google Group has been overflowing with more and more disgruntled developers complaining about lack of bug fixes, slow rollout of promised features, no mobile interface for OAuth, etc. (The list goes on and on) Well I&apos;m happy to say Twitter appears to be almost done with one much requested feature: browserless OAuth credentials exchange. It was hinted that Seesmic Look was using said exchange so today I took a peek at how Look worked behind the scenes.&lt;/p&gt;
&lt;cite&gt;http://the.hackerconundrum.com/2010/02/sneak-peek-at-twitters-browserless.html&lt;/cite&gt;
&lt;/blockquote&gt;
実装だと
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://blog.livedoor.jp/maraigue/archives/1109122.html&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;Maraigue風。:[Ruby][Twitter] OAuthのアクセストークンを、ブラウザなしで、Twitterのユーザ名およびパスワードのみを用いて取得する(通称：xAuth)ためのRubyのコード&lt;/a&gt;&lt;br /&gt;
&lt;cite&gt;http://blog.livedoor.jp/maraigue/archives/1109122.html&lt;/cite&gt;
&lt;/blockquote&gt;
とか
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://ja.pastebin.ca/1796209&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;pastebin - 誰か - post number 1796209&lt;/a&gt;&lt;br /&gt;
&lt;cite&gt;http://ja.pastebin.ca/1796209&lt;/cite&gt;
&lt;/blockquote&gt;
あとOAuthな話ですが
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://petitbanca.blogspot.com/2009/11/oauthtwitter.html&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;あまやどり: OAuthで認証してTwitterでつぶやいてみた&lt;/a&gt;&lt;br /&gt;
&lt;cite&gt;http://petitbanca.blogspot.com/2009/11/oauthtwitter.html&lt;/cite&gt;
&lt;/blockquote&gt;
あたりが参考になります。今日はpythonを使ってxAuthするサンプルを書いてみました。pythonにも元々oauthライブラリはあるのですが、今回は分かりやすく使わず書いてみました。&lt;br /&gt;
以下ソース。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
&lt;span class=&quot;PreProc&quot;&gt;from&lt;/span&gt;&amp;nbsp;pit &lt;span class=&quot;PreProc&quot;&gt;import&lt;/span&gt;&amp;nbsp;Pit&lt;br /&gt;
&lt;span class=&quot;PreProc&quot;&gt;from&lt;/span&gt;&amp;nbsp;random &lt;span class=&quot;PreProc&quot;&gt;import&lt;/span&gt;&amp;nbsp;getrandbits&lt;br /&gt;
&lt;span class=&quot;PreProc&quot;&gt;from&lt;/span&gt;&amp;nbsp;time &lt;span class=&quot;PreProc&quot;&gt;import&lt;/span&gt;&amp;nbsp;time&lt;br /&gt;
&lt;span class=&quot;PreProc&quot;&gt;import&lt;/span&gt;&amp;nbsp;hmac, hashlib&lt;br /&gt;
&lt;span class=&quot;PreProc&quot;&gt;import&lt;/span&gt;&amp;nbsp;sys&lt;br /&gt;
&lt;span class=&quot;PreProc&quot;&gt;import&lt;/span&gt;&amp;nbsp;urllib&lt;br /&gt;
&lt;span class=&quot;PreProc&quot;&gt;import&lt;/span&gt;&amp;nbsp;urllib2&lt;br /&gt;
&lt;span class=&quot;PreProc&quot;&gt;import&lt;/span&gt;&amp;nbsp;urlparse&lt;br /&gt;
&lt;br /&gt;
consumer_key = &apos;&lt;span class=&quot;Constant&quot;&gt;YOUR-CONSUMER-KEY&lt;/span&gt;&apos;&lt;br /&gt;
consumer_secret = &apos;&lt;span class=&quot;Constant&quot;&gt;YOUR-CONSUMER-SECRET&lt;/span&gt;&apos;&lt;br /&gt;
user = Pit.get(&apos;&lt;span class=&quot;Constant&quot;&gt;twitter.com&lt;/span&gt;&apos;, {&apos;&lt;span class=&quot;Constant&quot;&gt;require&lt;/span&gt;&apos;&amp;nbsp;: {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;username&lt;/span&gt;&apos;&amp;nbsp;: &apos;&lt;span class=&quot;Constant&quot;&gt;your username in twitter.com&lt;/span&gt;&apos;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;password&lt;/span&gt;&apos;&amp;nbsp;: &apos;&lt;span class=&quot;Constant&quot;&gt;your password in twitter.com&lt;/span&gt;&apos;,&lt;br /&gt;
}})&lt;br /&gt;
message = sys.argv[1]&lt;br /&gt;
access_url = &apos;&lt;span class=&quot;Constant&quot;&gt;&lt;a href=&quot;https://api.twitter.com/oauth/access_token&quot;&gt;https://api.twitter.com/oauth/access_token&lt;/a&gt;&lt;/span&gt;&apos;&lt;br /&gt;
post_url = &apos;&lt;span class=&quot;Constant&quot;&gt;&lt;a href=&quot;http://twitter.com/statuses/update.json&quot;&gt;http://twitter.com/statuses/update.json&lt;/a&gt;&lt;/span&gt;&apos;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Comment&quot;&gt;# build parameter to get access token&lt;/span&gt;&lt;br /&gt;
params = {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;oauth_consumer_key&lt;/span&gt;&apos;&amp;nbsp;: consumer_key,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;oauth_signature_method&lt;/span&gt;&apos;&amp;nbsp;: &apos;&lt;span class=&quot;Constant&quot;&gt;HMAC-SHA1&lt;/span&gt;&apos;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;oauth_timestamp&lt;/span&gt;&apos;&amp;nbsp;: str(int(time())),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;oauth_nonce&lt;/span&gt;&apos;&amp;nbsp;: str(getrandbits(64)),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;oauth_version&lt;/span&gt;&apos;&amp;nbsp;: &apos;&lt;span class=&quot;Constant&quot;&gt;1.0&lt;/span&gt;&apos;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;x_auth_mode&lt;/span&gt;&apos;&amp;nbsp;: &apos;&lt;span class=&quot;Constant&quot;&gt;client_auth&lt;/span&gt;&apos;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;x_auth_username&lt;/span&gt;&apos;&amp;nbsp;: user[&apos;&lt;span class=&quot;Constant&quot;&gt;username&lt;/span&gt;&apos;],&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;x_auth_password&lt;/span&gt;&apos;&amp;nbsp;: user[&apos;&lt;span class=&quot;Constant&quot;&gt;password&lt;/span&gt;&apos;],&lt;br /&gt;
}&lt;br /&gt;
params[&apos;&lt;span class=&quot;Constant&quot;&gt;oauth_signature&lt;/span&gt;&apos;] = hmac.new(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;%s&amp;amp;%s&lt;/span&gt;&apos;&amp;nbsp;% (consumer_secret, &apos;&apos;),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;&amp;amp;&lt;/span&gt;&apos;.join([&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;POST&lt;/span&gt;&apos;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;urllib.quote(access_url, &apos;&apos;),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;urllib.quote(&apos;&lt;span class=&quot;Constant&quot;&gt;&amp;amp;&lt;/span&gt;&apos;.join([&apos;&lt;span class=&quot;Constant&quot;&gt;%s=%s&lt;/span&gt;&apos;&amp;nbsp;% (x, params[x])&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;for&lt;/span&gt;&amp;nbsp;x &lt;span class=&quot;Statement&quot;&gt;in&lt;/span&gt;&amp;nbsp;sorted(params)]), &apos;&apos;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;]),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;hashlib.sha1).digest().encode(&apos;&lt;span class=&quot;Constant&quot;&gt;base64&lt;/span&gt;&apos;).strip()&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Comment&quot;&gt;# get access token&lt;/span&gt;&lt;br /&gt;
req = urllib2.Request(access_url, data = urllib.urlencode(params))&lt;br /&gt;
res = urllib2.urlopen(req)&lt;br /&gt;
token = urlparse.parse_qs(res.read())&lt;br /&gt;
token_key = token[&apos;&lt;span class=&quot;Constant&quot;&gt;oauth_token&lt;/span&gt;&apos;][0]&lt;br /&gt;
token_secret = token[&apos;&lt;span class=&quot;Constant&quot;&gt;oauth_token_secret&lt;/span&gt;&apos;][0]&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Comment&quot;&gt;# build parameters to post&lt;/span&gt;&lt;br /&gt;
params = {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;oauth_consumer_key&lt;/span&gt;&apos;&amp;nbsp;: consumer_key,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;oauth_signature_method&lt;/span&gt;&apos;&amp;nbsp;: &apos;&lt;span class=&quot;Constant&quot;&gt;HMAC-SHA1&lt;/span&gt;&apos;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;oauth_timestamp&lt;/span&gt;&apos;&amp;nbsp;: str(int(time())),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;oauth_nonce&lt;/span&gt;&apos;&amp;nbsp;: str(getrandbits(64)),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;oauth_version&lt;/span&gt;&apos;&amp;nbsp;: &apos;&lt;span class=&quot;Constant&quot;&gt;1.0&lt;/span&gt;&apos;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;oauth_token&lt;/span&gt;&apos;&amp;nbsp;: token_key,&lt;br /&gt;
}&lt;br /&gt;
params[&apos;&lt;span class=&quot;Constant&quot;&gt;status&lt;/span&gt;&apos;] = urllib.quote(message, &apos;&apos;)&lt;br /&gt;
params[&apos;&lt;span class=&quot;Constant&quot;&gt;oauth_signature&lt;/span&gt;&apos;] = hmac.new(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;%s&amp;amp;%s&lt;/span&gt;&apos;&amp;nbsp;% (consumer_secret, token_secret),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;&amp;amp;&lt;/span&gt;&apos;.join([&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&apos;&lt;span class=&quot;Constant&quot;&gt;POST&lt;/span&gt;&apos;,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;urllib.quote(post_url, &apos;&apos;),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;urllib.quote(&apos;&lt;span class=&quot;Constant&quot;&gt;&amp;amp;&lt;/span&gt;&apos;.join([&apos;&lt;span class=&quot;Constant&quot;&gt;%s=%s&lt;/span&gt;&apos;&amp;nbsp;% (x, params[x])&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Statement&quot;&gt;for&lt;/span&gt;&amp;nbsp;x &lt;span class=&quot;Statement&quot;&gt;in&lt;/span&gt;&amp;nbsp;sorted(params)]), &apos;&apos;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;]),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;hashlib.sha1).digest().encode(&apos;&lt;span class=&quot;Constant&quot;&gt;base64&lt;/span&gt;&apos;).strip()&lt;br /&gt;
&lt;span class=&quot;Statement&quot;&gt;del&lt;/span&gt;&amp;nbsp;params[&apos;&lt;span class=&quot;Constant&quot;&gt;status&lt;/span&gt;&apos;]&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Comment&quot;&gt;# post with oauth token&lt;/span&gt;&lt;br /&gt;
req = urllib2.Request(post_url, data = urllib.urlencode(params))&lt;br /&gt;
req.add_data(urllib.urlencode({&apos;&lt;span class=&quot;Constant&quot;&gt;status&lt;/span&gt;&apos;&amp;nbsp;: message}))&lt;br /&gt;
req.add_header(&apos;&lt;span class=&quot;Constant&quot;&gt;Authorization&lt;/span&gt;&apos;, &apos;&lt;span class=&quot;Constant&quot;&gt;OAuth %s&lt;/span&gt;&apos;&amp;nbsp;% &apos;&lt;span class=&quot;Constant&quot;&gt;, &lt;/span&gt;&apos;.join(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;[&apos;&lt;span class=&quot;Constant&quot;&gt;%s=&lt;/span&gt;&quot;%s&quot;&apos;&amp;nbsp;% (x, urllib.quote(params[x], &apos;&apos;)) &lt;span class=&quot;Statement&quot;&gt;for&lt;/span&gt;&amp;nbsp;x &lt;span class=&quot;Statement&quot;&gt;in&lt;/span&gt;&amp;nbsp;params]))&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Comment&quot;&gt;# done!&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Statement&quot;&gt;print&lt;/span&gt;&amp;nbsp;urllib2.urlopen(req).read()&lt;br /&gt;
&lt;/blockquote&gt;
生の処理で書いてあるので、oauthライブラリに依存させたくない様な移植には参考になるかもしれません。&lt;br /&gt;
ところで今回GtkTwitterというC言語で書いたTwitterクライアントのBasic認証を止めようと思っていてこの件を調べ始めたのですが,
どうやらTwitterに登録するOAuthアプリケーションには「Twitter」という文言を使ってはいけない事が今日分かりました。まぁGtkTwitterはクライアントアプリが名前登録出来た頃に書いた物なので、あの頃はOKだったのかも知れません。&lt;br /&gt;
しかしまぁ...どうせぃっちゅうねん！&lt;br /&gt;
&lt;br /&gt;
どうしましょ。Gtkほにゃらら...何がいいやろ。困った。&lt;br /&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>FirefoxでGoogle Buzzを高速に扱う方法！</title>
     <pubDate>Tue, 16 Feb 2010 01:48:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/web/20100216004016.htm</link>
     <category>buzz</category><category>google buzz</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/web/20100216004016.htm</guid>
     <description>
皆さん、&lt;a href=&quot;http://buzz.google.com&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;Google Buzz&lt;/a&gt;楽しんでますでしょうか。&lt;br /&gt;
Google Buzzが&lt;a href=&quot;http://twitter.com&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;対抗馬と言われて数日経ちました。現状iPhoneやGmailからといった、あるBuzz専用PCサイトではない場所からステータスの更新を行います。iPhone使っていない人もいるかと思いますし、Gmailのインタフェースが肌に合わない人もいるかと思います。&lt;br /&gt;
得にGmailのインタフェースではGmailの重さも合わさってか、若干重い気がします。&lt;br /&gt;
今日はFirefoxを使ってGoogle Buzzをスマートに扱える方法を紹介したいと思います。&lt;br /&gt;
用意するのは&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Firefox&lt;/li&gt;
&lt;li&gt;Stylish&lt;/li&gt;
&lt;/ul&gt;
この２つです。おそらく既にインストール済みという方もいらっしゃるかと思います。PC専用サイトが無いのにどうやって？と思われるかもしれません。実はこれらを使用してiPhone専用サイトにアクセスするのです。&lt;br /&gt;
Firefoxをインストールし、拡張であるStylishをインストールします。
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;https://addons.mozilla.org/ja/sunbird/addon/2108&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;Stylish :: Add-ons for Firefox&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;Restyle the web with Stylish, a user styles manager. Stylish lets you easily install themes and skins for Google, Facebook, YouTube, Orkut, and many, many other sites. You can even customize Firefox and other programs themselves.&lt;/p&gt;
&lt;cite&gt;https://addons.mozilla.org/ja/sunbird/addon/2108&lt;/cite&gt;
&lt;/blockquote&gt;
インストールしたら以下のURLにアクセスします。&lt;br /&gt;
&lt;blockquote class=&quot;mention&quot;&gt;
&lt;a href=&quot;https://m.google.com/app/buzz?force=1&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;https://m.google.com/app/buzz?force=1&lt;/a&gt;
&lt;/blockquote&gt;
User Agent Switcherは使いません。アクセス後、リロードを繰り返す様な場合は一度Sign OutしてGoogleにログインし直すと上手く行きます。
そしてステータスバーにあるStylishのアイコンを右クリックして「スタイルの管理」「新しいスタイルを書く」をクリックして以下の様に入力します。&lt;br /&gt;
&lt;blockquote&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/images/google-buzz-sidebar1.png&quot; rel=&quot;lightbox&quot; title=&quot;google-buzz-sidebar1&quot;&gt;&lt;img src=&quot;http://mattn.kaoriya.net/images/google-buzz-sidebar1-thumb.png&quot; alt=&quot;google-buzz-sidebar1&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/blockquote&gt;
次にテキストエリア部に以下を張り付けます。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
@namespace url(&lt;a href=&quot;http://www.w3.org/1999/xhtml);&quot;&gt;http://www.w3.org/1999/xhtml);&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
@-moz-document url-prefix(&lt;span class=&quot;Constant&quot;&gt;&amp;quot;&lt;a href=&quot;https://m.google.com/app/buzz&quot;&gt;https://m.google.com/app/buzz&lt;/a&gt;&amp;quot;&lt;/span&gt;) &lt;span class=&quot;Identifier&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;#lm-following&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;#following-toolbar&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;background&lt;/span&gt;: &lt;span class=&quot;Constant&quot;&gt;#AACCff&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Special&quot;&gt;!important&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;cursor&lt;/span&gt;: &lt;span class=&quot;Type&quot;&gt;pointer&lt;/span&gt;;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;#search-btn-following&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;cursor&lt;/span&gt;: &lt;span class=&quot;Type&quot;&gt;pointer&lt;/span&gt;;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;.YX40Ye&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;.CqrfPb&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;.Gks0Tb&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;.leetlb&lt;/span&gt;,&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;.NmM0jd&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;Identifier&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span class=&quot;Type&quot;&gt;cursor&lt;/span&gt;: &lt;span class=&quot;Type&quot;&gt;pointer&lt;/span&gt;;&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Identifier&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote class=&quot;code&quot;&gt;
入力出来たら保存です。&lt;br /&gt;
次にこのページをブックマークし、その後メニューから「ブックマークの管理」を開きます。先ほどブックマークした物を選択し、「このブックマークはサイドバーで読み込む」にチェックを入れます。&lt;br /&gt;
&lt;blockquote&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/images/google-buzz-sidebar2.png&quot; rel=&quot;lightbox&quot; title=&quot;google-buzz-sidebar2&quot;&gt;&lt;img src=&quot;http://mattn.kaoriya.net/images/google-buzz-sidebar2-thumb.png&quot; alt=&quot;google-buzz-sidebar2&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/blockquote&gt;
あとはブックマークメニューから開くと...
&lt;blockquote&gt;
&lt;a href=&quot;http://mattn.kaoriya.net/images/google-buzz-sidebar3.png&quot; rel=&quot;lightbox&quot; title=&quot;google-buzz-sidebar3&quot;&gt;&lt;img src=&quot;http://mattn.kaoriya.net/images/google-buzz-sidebar3-thumb.png&quot; alt=&quot;google-buzz-sidebar3&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;/blockquote&gt;
じゃじゃーーーん！完成です。&lt;br /&gt;
まぁただ自動でリロードしてくれないのでiPhoneと同じく自分でリロードボタンを押さなければなりませんが、横目でサイドバーを閲覧中にどんどん増えて行って気になるよりは全然マシです。&lt;br /&gt;
&lt;br /&gt;
これでスマートにGoogle Buzzが操作出来る様になりました。ちなみにStylishを使っているのは、iPhoneはカーソルが無いのでGoogle Buzzには元々マウス形状に関するスタイルシートが記述されていないのを修正する為です。あと少し背景色の調整もしています。&lt;br /&gt;
&lt;br /&gt;
Postはもちろん、CommentやLikeも問題なく出来ます。一度試して見られては如何でしょうか。&lt;br /&gt;
なお、このサイドバー化のヒントをくれたiratqqさんに感謝を表したいと思います。ありがとうございます！&lt;br /&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>興味のあるテキストエディタにVimと書いておいたら面接で爆笑された</title>
     <pubDate>Tue, 09 Feb 2010 00:18:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/etc/20100209001119.htm</link>
     <category>vim</category><category>ネタ</category><category>emacs</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/etc/20100209001119.htm</guid>
     <description> 
Inspired by &lt;a href=&quot;http://d.hatena.ne.jp/moriyoshi/20100204/1265242273&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;http://d.hatena.ne.jp/moriyoshi/20100204/1265242273&lt;/a&gt;(興味のある言語にPHPと書いておいたら面接で爆笑された)
&lt;blockquote class=&quot;mention&quot;&gt;
UNIXエンジニアを募集してる会社の採用面接を受けた時の話。&lt;br /&gt;
転職エージェントに作れと言われて作ったシートに、「使っているテキストエディタ」という欄があったんです。&lt;br /&gt;
nanoとか秀丸とか色々書いたけど、一応WindowsでもUNIXでも使えて操作感が好きだったるので、&lt;br /&gt;
Vimと書いておいたのですが、それを見た仙人染みた長髪の面接官のリアクションが酷かった。&lt;br /&gt;
面接官「Vim・・・ふははっ！Vim！」&lt;br /&gt;
面接官「Vim使ってるんですか？ｗｗｗｗｗ」&lt;br /&gt;
　　俺「(唖然)は、はい・・まだVimscriptを理解したぐらいですが。。」&lt;br /&gt;
面接官「Vim・・・ﾆﾔﾆﾔ」&lt;br /&gt;
その人はEmacs信者と呼ばれていて、当然Vimくらい知っている人だったので、&lt;br /&gt;
Emacsが「テキストエディタではなく環境」と呼ばれている事を知らないワケが無いだろうと思っていた。&lt;br /&gt;
つまり、このリアクションは&amp;quot;理不尽な状況に直面した時にどう対応するか&amp;quot;を見ているんだろうと判断し、あえて突っ込みは入れずに対処した。&lt;br /&gt;
しかし最後の質問で「何故Ctrlキーを多用する様な操作を採用したんですか？」と聞くと、&lt;br /&gt;
気まずそうに理由を話し、最後に「・・・と、聞いてます」と答えた。&lt;br /&gt;
つまりこの人は神からEmacsを使えと言われたから使っているのであって、&lt;br /&gt;
特別Emacsに思い入れとか無いおっさんエンジニアなんだなあと分かった。&lt;br /&gt;
オムニ補完とかもVim発のテクニックだし、Emacsやってるなら補完に興味を持つのは普通だと思うんだけどなあ。&lt;br /&gt;
多分ガチで知らなかったんだろう。&lt;br /&gt;
&lt;/blockquote&gt;
あくまでネタであって、宗教論争のつもりじゃないのであしからず。
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>Google Chrome拡張がクラッシュして治らない時は...</title>
     <pubDate>Fri, 05 Feb 2010 02:01:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/chrome/20100205014252.htm</link>
     <category>chrome</category><category>chromium</category><category>google chrome</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/chrome/20100205014252.htm</guid>
     <description>
なんでか分かんないけど、今日突然Google Chromeがクラッシュして落ちた。まぁdevチャネルつかってるからしょうがないかとは思ったんだけど、再起動したら１秒で「はてなブックマーク拡張」が落ちる様になった。いろいろ調べてもダメで、どうやら拡張が使ってるストレージが壊れた様子。&lt;br /&gt;
調べた結果
&lt;blockquote class=&quot;code&quot;&gt;
C:&amp;yen;Documents and Settings&amp;yen;ユーザ名&amp;yen;Local Settings&amp;yen;Application Data&amp;yen;Google&amp;yen;Chrome&amp;yen;User Data&amp;yen;Default&amp;yen;Local Storage
&lt;/blockquote&gt;
には「chrome-extension_&lt;b&gt;拡張ID&lt;/b&gt;」から始まるsqlite3のファイルがあり、どうやらこれが書き込まれている最中にクラッシュした為、読み込み出来なくなったみたい。&lt;br /&gt;
「はてなブックマーク拡張」はローカルストレージ自身に重要性は無かったので
&lt;blockquote class=&quot;code&quot;&gt;
chrome-extension_dnlfpnhinnjdgmjfpccajboogcjocdla_0.localstorage
&lt;/blockquote&gt;
をためらい無しに削除、そして再起動。&lt;br /&gt;
見事復活出来ました。&lt;br /&gt;
&lt;br /&gt;
ちなみにUNIX系だと
&lt;blockquote class=&quot;code&quot;&gt;
$HOME/.config/google-chrome/Default/Local Storage
&lt;/blockquote&gt;
にあります。
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
   <item>
     <title>Vim script manager「Vimana」が便利すぎる。</title>
     <pubDate>Thu, 04 Feb 2010 00:52:00 +0900</pubDate>
     <link>http://mattn.kaoriya.net/software/vim/20100204002218.htm</link>
     <category>vim</category>
     <guid isPermaLink="true">http://mattn.kaoriya.net/software/vim/20100204002218.htm</guid>
     <description>
これまでvimスクリプトをインストールするには、&lt;a href=&quot;http://www.vim.org/&quot; class=&quot;external&quot; target=&quot;_blnak&quot;&gt;vim online&lt;/a&gt;でダウンロードして、書いてあるインストール手順に従って、時にはそのまま、時にはzipを解凍して.vim(windowsならvimfiles)に自前でコピーするのが一般的でした。おそらく自動化されている方もいるかもしれませんが、特有のスクリプト専用の更新ツールくらいかと思います。&lt;br /&gt;
Perlを知っている方ならばCPAN、rubyを知っている方ならばgemにあたる物がvimには無かったんです。&lt;br /&gt;
配布物が統一されていない為、無理だろうな...とも思ってました。&lt;br /&gt;
が、そこに登場したのがVimana(Vim script manager)です。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
Vimana(3)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; User Contributed Perl Documentation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Vimana(3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;NAME&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vimana - Vim script manager.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;DESCRIPTION&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vimana is an easy to use system for searching , installing, and&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; downloading vim script.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vimana provides a command-line interface such like &amp;quot;aptitude&amp;quot; programe&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; on Debian linux, for you to search , download , install , upgrade&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scripts from &amp;lt;&lt;a href=&quot;http://www.vim.org&quot;&gt;http://www.vim.org&lt;/a&gt;&amp;gt; (vimonline site).&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Vimana can install a vim script package to your vim runtime path&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; automatically by inspecting the content of archive file or vim script.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for example , if an archive file contains &apos;syntax&apos;,&apos;plugin&apos;,&apos;indent&apos;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; directory , then these files should be installed to _______ directory.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if it&apos;s a vim color scheme , then it should be put into ______________&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and prompt for setting the installed colorscheme as default.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; We plan to provide port files via git repository, vimrc customization&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and internationalization in future.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( In some modern Indian languages, vimXna or vimXn means &amp;quot;aircraft&amp;quot;. )&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOTE: Vimana only provides search,info,install commmands currently.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Getting started from Vimana::Manual.&lt;br /&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;quote&quot;&gt;
&lt;a href=&quot;http://github.com/c9s/Vimana&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;c9s&apos;s Vimana at master - GitHub&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;Vimana is an easy to use system for searching , installing, and downloading vim script. Vimana provides a command-line interface such like aptitude programe on Debian linux, for you to search , download , install , upgrade scripts from http://www.vim.org (vimonline site).&lt;/p&gt;
&lt;cite&gt;http://github.com/c9s/Vimana&lt;/cite&gt;
&lt;/blockquote&gt;
Vimanaは&lt;a href=&quot;http://github.com/c9s&quot; class=&quot;external&quot; target=&quot;_blank&quot;&gt;c9s(Cornelius)&lt;/a&gt;さんが作っているPerlスクリプトで、vimスクリプトの検索、情報表示、インストール、ダウンロード、削除が行えるツールです。vimスクリプトは拡張子がvimというだけで、一見そのスクリプトが単なるpluginなのか、はたまたsyntaxなのか、ftpluginなのか分かりません。さらに~/.vim以下の構造になっていればそのまま上書き出来るのですが、中にはvimスクリプトのみ配布されている物もあります。Vimanaはそれをパースして適当なフォルダにインストールしてくれます。&lt;br /&gt;
インストールは以下の様に行います。
&lt;blockquote class=&quot;code&quot;&gt;
# git clone git://github.com/c9s/Vimana&lt;br /&gt;
# cd Vimana&lt;br /&gt;
# perl Makefile.PL&lt;br /&gt;
# make&lt;br /&gt;
# make test&lt;br /&gt;
# make install&lt;br /&gt;
&lt;/blockquote&gt;
ご覧頂ければ分かる様にPerlで出来ています。これでvimanaコマンドがインストールされます。詳しい使い方は
&lt;blockquote class=&quot;code&quot;&gt;
# perldoc Vimana::Manual&lt;br /&gt;
&lt;/blockquote&gt;
を参照して下さい。簡単な使い方は以下の通りです。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
# vimana update
&lt;/blockquote&gt;
まずインデックスを更新します。そして「gist」というキーワードで検索してみます。
&lt;blockquote class=&quot;code&quot;&gt;
# vimana search gist&lt;br /&gt;
regview.vim&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Interactively browse register contents&lt;br /&gt;
filetyperegisters&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Localize register contents based on filetype&lt;br /&gt;
stackreg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Vz-like stackable registers&lt;br /&gt;
regredir.vim&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Vim plugin to redirect command output into a register&lt;br /&gt;
regreplop.vim&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- operator to replace motion/visual with a register&lt;br /&gt;
registryedit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Edit the win32 registry through vim.&lt;br /&gt;
clipbrd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Clipboard and other register content editor.&lt;br /&gt;
fakeclip&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - pseudo clipboard register for non-GUI version of Vim&lt;br /&gt;
destructive-paste&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Pastes the register, replacing text&lt;br /&gt;
tregisters&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - List, edit, and run/execute registers/clipboards&lt;br /&gt;
operator-replace&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Operator to replace text with register content&lt;br /&gt;
gist.vim&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - vimscript for gist&lt;br /&gt;
replacewithregister&amp;nbsp;&amp;nbsp;- Replace text with the contents of a register.&lt;br /&gt;
&lt;/blockquote&gt;
サマリ一覧されて便利ですね。次に手前味噌ですが「gist.vim」をインストールしてみましょう。&lt;br /&gt;
&lt;blockquote class=&quot;code&quot;&gt;
# vimana install gist.vim&lt;br /&gt;
Plugin will be installed to vim runtime path: /home/mattn/.vim&lt;br /&gt;
Canonical name: gist.vim&lt;br /&gt;
Downloading from: &lt;a href=&quot;http://www.vim.org/scripts/download_script.php?src_id=12283&quot;&gt;http://www.vim.org/scripts/download_script.php?src_id=12283&lt;/a&gt;&lt;br /&gt;
Saving file to /tmp/vimana-imqqdp/gist.vim &lt;br /&gt;
Inspecting file content for script type.&lt;br /&gt;
Script type found: plugin.&lt;br /&gt;
Installing..&lt;br /&gt;
Copying /tmp/vimana-imqqdp/gist.vim to /home/mattn/.vim/plugin&lt;br /&gt;
Installation Done.&lt;br /&gt;
&lt;/blockquote&gt;
簡単すぎます。&lt;br /&gt;
ちなみにpluginフォルダ構成になっているスクリプトでも問題なくインストール出来ます。必要なくなったら
&lt;blockquote class=&quot;code&quot;&gt;
# vimana remove gist.vim&lt;br /&gt;
&lt;/blockquote&gt;
とすればアンインストールもやってくれます。&lt;br /&gt;
すばらしい... c9s++&lt;br /&gt;
こういうのが欲しかったんだと思いました。&lt;br /&gt;
&lt;br /&gt;
実は今日、c9sさんからVimanaのcommit権を貰いました。もちろんWindowsにポーティングさせて頂きました。&lt;br /&gt;
メインブランチにはまだ入っていませんが、windowsブランチに入っています。興味のある方はぜひインストールしてみてください。&lt;br /&gt;
&lt;br /&gt;
なおc9sさんは台湾の方です(英語は話せますが)。もしVimanaについて要望などあれば私が日本語窓口させて頂きます。&lt;br /&gt;
&lt;br /&gt;
</description>
     <author>mattn.jp@gmail.com (mattn)</author>
   </item>
  </channel>
</rss>
