ラベル Vim の投稿を表示しています。 すべての投稿を表示
ラベル Vim の投稿を表示しています。 すべての投稿を表示

2014年8月17日日曜日

編集王(エディットキング) バトルエディターズ 第4話:正義のヒーロー オクセイダー!

編集王(エディットキング) バトルエディターズ
第4話:正義のヒーロー オクセイダー!

注意:この物語はフィクションです。実在する人物・団体・ソフトウェア・テキストエ
ディタとは一切の関係がありません。宗教論争をする意図もありません。

注意:この物語を読んだところで、テキストエディタの知識が付くわけがありません。
物語中に存在するテキストエディタのネタはオマージュ程度であり、知っている人がほ
くそ笑む程度のものです。期待しないようにしましょう。

「ルールを守って楽しくエディット!」


--------------------------------------------------------------------------------
Scene 1
--------------------------------------------------------------------------------

「しばらく見ないうちに何か、お前の周りはいつのまにか賑やかなことになってんのな」

派戸君が僕の教室にやってくるなり、そう言った。

「僕も実は何が起こったのかよく分からないんだけど……」

「あれ、E 組の遠馬さんじゃないですか、なんで V 組に?」

V 組の女子が興味新々といった風にやってくる。

「俺の Emacs を最強のテキストエディタとするために、今はこの男と行動を共にするこ
とを選んだ。そのなんだ、俺も愛というものを知りたくなってな」

「キャー、それっていわゆる……」

なんか勘違いしているような気がするんだけれど、深く考えることを止めた。

どうやら、この E 組の楠崎遠馬という人と昨日エディットした後に何かあったようなの
だ。今日になってからというもの、この人に付き纏われて困っているという訳である。

「全くもう、追い払えばよいのに。あなたも物好きね」

来夢ちゃんはそう言うのだけれど、彼も悪い人ではないからなぁ。

「それにしても、今日のお前はだらしない。昨日のお前はもっと、こう熱い男だったは
ず」

「いや、そんなことはないと思うよ」

わ、悪い人ではないからなぁ……。

「遠馬君、派戸君、二人とも午後の授業が始まるわ」

「もうこんな時間か。では、さらばだ。また来る」

「修、何があったのか絶対教えてくれよな」

来夢ちゃんのおかげで助かった。誤解が広まるのを防げた気がする。いや手遅れかもし
れない。


--------------------------------------------------------------------------------
Scene 2
--------------------------------------------------------------------------------

次の授業は海先生の学級活動であった。

「それでは本日は今度のエディタ祭でやる出し物を決めるぞ。とはいえ、題目はもう決
まっているんだがな。お前達がやるのはエディ劇だ」

クラス全員の大ブーイング。そりゃそうだよね。劇というのは手間がかかるし、特に役
者が大変だ。僕も役に選ばれたくはないし……。こういうときは目立たず、楽そうな仕
事を回されることをじっくりと待つのがよいと相場は決まっている。

「えー、ではまずは役者を決めるとしようか。誰かやってみたい奴はいるか?」

「ハイッ!!」

元気良く手を挙げたのは、奥 清太(おく せいた)君だった。彼は制服を着崩して
ちょっと怖いんだけれど、こういうの好きなんだよね。僕には真似できないや。

「お、清太か。威勢が良いな。では一人決まりと。他にやりたい奴はいないか?」

当然誰も手を挙げようとはしない。

「仕方ない。ここは他人の推薦でも可とする」

推薦かよ……。推薦された人は事実上の死刑宣告ではないか。
とはいえ、平凡な学園生活を送っている僕を推薦するような人なんているわけないよね。

「はい。今回の劇に、ぜひともという人がいるのです」

「来夢さん。それは誰かな」

僕はすっかり安心していた。

「私は修君にぜひとも役者として頑張ってもらいたいと思いますわ」

来夢ちゃんが僕を推薦するだなんて。薄々思ってはいたが、僕に対する彼女の態度はど
こかおかしい。
やはり、来夢ちゃんと以前エディットしたときに何かあったのでは。
記憶が無いのが本当に悔やまれる。

「先生、そこで一つ提案なのですが私が脚本を書いてもよろしいですか?」

「問題ないぞ。どうせ誰かに頼もうとしていたところだ。皆も異論はないな」

拍手で迎えられる。

「では修君を今回の物語の主役、『暗黒美夢王』にしたいのです」

暗黒……美夢王……? なぜかその名を聞いたとき、急に意識が遠くなって……。

「やはり……あなたは」

来夢ちゃんのその声が耳にはっきりと残っていた。

「主役の話はともかくとして、修君そういうことらしいんだが引き受けてもらえるだろ
うか」

「クックック……我を直々に指名するとは面白い。その願い、引き受けたぞ」

我が指名されたとあっては、黙っているわけにはいかないな。
エディ劇が何かは知らないが、我のテキストエディタによってエディ劇の世界も我が制
覇してくれる。


--------------------------------------------------------------------------------
Scene 3
--------------------------------------------------------------------------------

その後、同じグループ同士で分かれることとなった。我は当然役者のグループとなる。
脚本の来夢も同じグループのようだ。

「さて、では配役を決めましょうか」

「俺は絶対にコイツを許さねぇ! 主役は俺の物だ」

我が主役ということに、納得がいっていない様子なのは奥 清太であった。

「ほう……主役を得ることに、よほどこだわりがあるようだな」

「俺はエディ劇部に所属しているんだよ。エディ劇には一定の実力がある。主役を、エ
ディ劇に全く興味なさそうな奴にかっさらわれるのには我慢ならねぇ」

「それがエディ劇に対する愛か。よいだろう、それではエディットで勝負するというの
はどうだ。我が勝ったら主役は我の物、しかし我が負けたらそれを譲ろう」

彼の愛がどの程度のものか知るのにエディットはとても効果がある。
エディットをすれば、その者の全てを知ることができるといっても過言ではないだろ
う。我はこれを求めていたのだ。

「それは面白い。言っておくが、俺はエディットも強いぜ? 勝負を挑んだことを後悔
させてやる」

「構わん。むしろ、強くないと困る。我が本気を出せないからな」

「皆さん、落ちついてくださいーー」

我らの並々ならぬ気迫に、他の者が止めに入ろうとする。それを静止したのは来夢で
あった。

「やらせておきましょう。私もちょうどこれが見たかったのだし。修、あなたが本当に
あの時の彼なのか……。確かめさせてもらうわ」

彼女が何を考えているのか知らないが、好都合だ。今は全力でエディットを楽しむとし
よう。

「エディタディスク セット!」
「メインエディタ 実行開始!」
「AR モニター リンク完了!」
「「編集(エディット)!」」


--------------------------------------------------------------------------------
Scene 4
--------------------------------------------------------------------------------

- TURN 1 -

清太:EP 4000 メモリ 4/8 メインエディタ sed
修:EP 4000 メモリ 4/8 メインエディタ Vim

「ほう……エディタは sed なのか。珍しい」

「sed は俺の魂のエディタだ。エディタは小さいものこそが美しい。お前こそ、やはり
Vim を使うんだな」

「ああ、それがどうかしたか」

「vi を使っているお前に親近感を感じていたのだが、なぜ気が変わったのかは聞かない
ことにする。先行は貰うぜ。俺のターン、ロード! 俺はメモリより『find』を実行す
る」

「find の機能を適用。このコマンドをトラッシュに送ることで、ディスクより任意の単
体コマンドを機能を無効化して特殊実行する。『ファインド・コマンド!』」

 -------------------------------------------------------------------------------
|find:コマンド
|戦闘力:200
|機能『ファインド・コマンド』 このコマンドをトラッシュに送る。ディスクより任意
|の単体コマンドを機能を無効化して特殊実行する。
 -------------------------------------------------------------------------------

「俺はディスクより『awk』コマンドを特殊実行」

清太:EP 4000 メモリ 5/8 メインエディタ sed

「機能を無効化して特殊実行? これは何かの狙いがあるはずだ……」

「さらに、awk と sed を対象に特殊コマンド『パイプライン』の機能を適用。エクスト
ラディスクより、『編集戦士 オクセイダー』を実行する。AWK と sed の力を受け継ぎ
し戦士よ、今ここに 単体コマンドの矜持を見せよ! パイプライン実行 編集戦士オ
クセイダー!」

 -------------------------------------------------------------------------------
|パイプライン:特殊コマンド
|機能『パイプライン・コネクション』 エクストラディスクのパイプラインコマンドを
|選択する。メモリより、選択したコマンドによって決められた単体コマンドをトラッ
|シュに送る。エクストラディスクより、選択したパイプラインコマンドを特殊実行す
|る。
 -------------------------------------------------------------------------------

清太:EP 4000 メモリ 3/8 メインエディタ オクセイダー

オクセイダー 戦闘力 1500

「俺はこれでターンを終了する」

- TURN 2 -

清太:EP 4000 メモリ 3/8 メインエディタ オクセイダー
修:EP 4000 メモリ 4/8 メインエディタ Vim

「初回から切り札の登場か。なかなかやるな。我のターン、ロード!」

単体コマンドを利用したコンボ。ゾクゾクする。この感覚は久しぶりのものだった。
彼は態度に問題があるが、かなりの実力者であることが伺える。

それならば、多少本気を出さないといけない。まずは、

「我はプラグイン『neo-complete』を Vim にインストールする。プラグインをインス
トールしたことにより、我の Vim の戦闘力は 500 アップする」

Vim 戦闘力 1000 → 1500

「『neo-complete』の機能を適用する。コマンドを 1 つトラッシュに送り、戦闘力をこ
のターン 1.5 倍にする。『ネオ・コンプリート・フラッシュ!』」

Vim 戦闘力 1500 → 2250

「Vim でオクセイダーにバトル!」

「くぅ……。やるじゃねぇか」

清太:EP 3250 メモリ 3/8 メインエディタ オクセイダー
美夢王:EP 4000 メモリ 4/8 メインエディタ Vim

さて、オクセイダーの機能がよく分からない以上、下手に動くと危険か。

「我はこれでターンを終了する」

Vim 戦闘力 2250 → 1500

- TURN 3 -

清太:EP 3250 メモリ 3/8 メインエディタ オクセイダー
美夢王:EP 4000 メモリ 4/8 メインエディタ Vim

「俺のターン、ロードだ!」

「俺は単体コマンド 『sh』 を実行する。sh の機能を適用。EP を 500 支払い、単体コ
マンドを実行する。『シェル・エグゼキューション!』」

清太:EP 2750 メモリ 5/8 メインエディタ オクセイダー

 -------------------------------------------------------------------------------
|sh:コマンド
|戦闘力:0
|機能『シェル・エグゼキューション』 EP を 500 支払う。ディスクより戦闘力 500
|以下のコマンドをランダムでメモリ上に特殊実行できる。
|この機能は 1 ターンに一度適用できる。
 -------------------------------------------------------------------------------

清太:EP 2750 メモリ 6/8 メインエディタ オクセイダー

「俺が実行するのは『cp』コマンド。cp コマンドの機能を適用する。このコマンドは選
択したメモリ上の戦闘力 500 以下のコマンドと同じ機能を得る。『コピー・フィー
チャー!』」

 -------------------------------------------------------------------------------
|cp:コマンド
|戦闘力:300
|機能『コピー・フィーチャー』 自分のメモリ上の戦闘力 500 以下のコマンドを一つ
|選択する。このターンの終わりまで同じ機能を得る。
|この機能は 1 ターンに一度適用できる。
 -------------------------------------------------------------------------------

「当然、俺が選択するのは『sh』コマンド。『シェル・エグゼキューション!』 EP を
500 支払い、単体コマンドを実行する。俺が実行するのは『mv』コマンド」

清太:EP 2250 メモリ 7/8 メインエディタ オクセイダー

「オクセイダーは自分のメモリ上の単体コマンドの数だけ戦闘力を上げる。単体コマン
ドが 3 つ実行されたことで、オクセイダーの戦闘力は 1500 ポイントアップする!」

オクセイダー 戦闘力 1500 → 3000

「なんだと……」

「バトルだ! オクセイダーで Vim に攻撃する」

清太:EP 2250 メモリ 7/8 メインエディタ オクセイダー
美夢王:EP 2500 メモリ 4/8 メインエディタ Vim

「ぐぅ……やるな」

「俺はこれでターンを終了する。これが単体コマンドの力だぜ!」

- TURN 4 -

清太:EP 2250 メモリ 7/8 メインエディタ オクセイダー
美夢王:EP 2500 メモリ 4/8 メインエディタ Vim

「クックック……面白い。困難であるからこそ燃える。それがエディットの真髄だ。我
のターン、ロード!」

「我はメモリより、『neo-mru』を Vim にインストールする。プラグインが インストー
ルされたことにより、戦闘力が 500 アップする」

Vim 戦闘力 1500 → 2000

戦闘力は neo-complete の機能を使っても 3000、これではオクセイダーにはダメージ
を与えることができない。ならばせめて、相手の厄介な単体コマンドを破壊する必要が
あるか。

「我は、sh に対して Vim でバトル!」

「それはどうかな」

「何だと?」

「オクセイダーの機能を適用する! このコマンドがメモリ上に存在する限り、相手は
戦闘力 500 以下の単体コマンドをバトルの対象にできない。弱者を守るのが正義の誇り
だ。『オクセイド・シールド!』」

 -------------------------------------------------------------------------------
|オクセイダー:エディタ・AWK・sed
|パイプライン AWK + sed
|戦闘力:1500
|このコマンドはパイプライン実行でのみエクストラディスクより特殊実行できる。
|このプラグインは AWK としても sed としても扱う。
|自分のメモリ上の戦闘力 500 以下の単体コマンドにつき、500P 戦闘力がアップする。
|機能『オクセイド・シールド』 このコマンドがメモリ上に存在する限り、相手は
|戦闘力 500 以下の単体コマンドをバトルの対象にできない。
 -------------------------------------------------------------------------------

なんと、このコマンドはそういう機能を持っているとは。厄介極まりないな。

「我は……ターンを終了する」

- TURN 5 -

清太:EP 2250 メモリ 7/8 メインエディタ オクセイダー
美夢王:EP 2500 メモリ 5/8 メインエディタ Vim

「俺のターン、ロード! 俺はセドンデスの機能を適用する。『セド・ン・デス!』 こ
の機能を使うには sed を実行している必要があるが、俺のオクセイダーは sed として
扱うので問題ない。 メモリ上のコマンドを 1 つ トラッシュに送らせてもらうぜ。
さーて、何がトラッシュに行くかな?」

 -------------------------------------------------------------------------------
|セドンデス:特殊コマンド
|sed が自分のメモリ上で実行されている場合、次の機能を適用できる。
|機能『セド・ン・デス』 相手のメモリ上のコマンドを 1 つ、ランダムでトラッシュ
|に送る。
 -------------------------------------------------------------------------------

「くっ、我の neo-complete がトラッシュに」

Vim 戦闘力 2000 → 1500

「おっとこれは運が良い。これでお前は俺のコマンドに対する反撃の可能性も無くなっ
たというわけだ」

「俺は sh の機能を適用。EP を 500 支払い、単体コマンドを実行する。『シェル・エ
グゼキューション!』」

清太:EP 1750 メモリ 8/8 メインエディタ オクセイダー
美夢王:EP 2500 メモリ 5/8 メインエディタ Vim

「俺が実行するのは『rm』コマンド。『rm』コマンドの機能を適用する。1 ターンに一
度、自分のメモリ上のコマンドをトラッシュに送ることで EP を 600 回復する。『リ
ムーブ・ヒーリング!』」

 -------------------------------------------------------------------------------
|rm:コマンド
|戦闘力:400
|機能『リムーブ・ヒーリング』 自分のメモリ上のコマンドを一つトラッシュに送る。
|EP を 600 ポイント回復する。
|この機能は 1 ターンに一度適用できる。
 -------------------------------------------------------------------------------

「単体コマンドが実行されたことで当然、オクセイダーの戦闘力は 500 アップする」

オクセイダー 戦闘力 3000 → 3500

清太:EP 2350 メモリ 7/8 メインエディタ オクセイダー
美夢王:EP 2500 メモリ 5/8 メインエディタ Vim

「さっきからエディットを一人で進められている! このコンボ、我も感心せざるをえ
ない」

「更に俺は、『単体コマンドという考え方』の機能を適用する! 俺のメモリ上の戦闘
力 500 以下の単体コマンドの戦闘力は 500 アップする。『コマンド・ワールド!』」

 -------------------------------------------------------------------------------
|単体コマンドという考え方:特殊コマンド
|「コマンド・ワールド」自分のメモリ上の戦闘力 500 以下の単体コマンドの戦闘力
|を、このターンのみ 500 アップする。
 -------------------------------------------------------------------------------

sh 戦闘力 0 → 500
cp 戦闘力 300 → 800
mv 戦闘力 200 → 700
rm 戦闘力 400 → 900

清太:EP 2350 メモリ 6/8 メインエディタ オクセイダー
美夢王:EP 2500 メモリ 5/8 メインエディタ Vim

「単体コマンドの戦闘力を上げる……だと」

いやしかし、この程度では我のエディタの戦闘力を上回ることはできない。意味がない
はずだ。ならば彼には奥の手が?

「俺は『コマンドの結束』の機能を適用する。メモリ上の単体コマンドのバトルをス
キップすることで、オクセイダーの戦闘力を上げる。『ユナイト・パワー!』」

清太:EP 2350 メモリ 5/8 メインエディタ オクセイダー
美夢王:EP 2500 メモリ 5/8 メインエディタ Vim

 -------------------------------------------------------------------------------
|コマンドの結束:特殊コマンド
|「ユナイト・パワー」任意の数の自分のメモリ上の単体コマンドのバトルをこのターン
|スキップする代わりに、指定したコマンドの戦闘力をスキップした単体コマンドの戦
|闘力を合計しただけ上げる。
 -------------------------------------------------------------------------------

オクセイダー 戦闘力 3500 → 6400

「一つ一つは弱くても、単体コマンドは組み合わせれば大きな力となる。少々戦闘力が
過剰だが、これでお前のテキストエディタは木っ端微塵だ! オクセイダーで Vim に
バトル! 4900 のダメージを喰らうといい」

「『一つ一つは弱くても、単体コマンドは組み合わせれば大きな力となる』、か。それ
はその通りだ」

「お前、なんでそんなに余裕なんだ! これが通れば負けは確定する」

「負ける気がないから……だな。お前がこのターン勝負を掛けることは分かっていた。
我は特殊コマンド『インスタント・ネオ』を適用する。エクストラディスクより、
neo-Vim を特殊実行」

 -------------------------------------------------------------------------------
|インスタント・ネオ:特殊コマンド・速攻(クイック)
|機能『インスタント・ネオ・エグゼキューション』 neo と名の付くプラグインがイン
|ストールされている自分のメモリ上の Vim コマンドをトラッシュに送り、neo-Vim を
|エクストラディスクより特殊実行する。このターンの終わりに neo-Vim はトラッシュ
|に送り、Vim を特殊実行する。
 -------------------------------------------------------------------------------

neo-Vim 戦闘力 1000 → 1800

「neo-Vim だと、まさか! 遠馬がお前に負けたというのは本当だったのか」

「そのまさかだ! フハハハハ」

「neo-Vim の実行により、このコマンドの機能を適用できる。『暗黒美夢王の嘲笑』。
我が無効にするのは「コマンドの結束」。『ダーク・ラフイング!』」

 -------------------------------------------------------------------------------
|暗黒美夢王の嘲笑:特殊コマンド・速攻(クイック)
|機能『ダーク・ラフイング』 自分のメモリ上に neo-Vim が実行されている場合、
|このターンに適用された相手のコマンドの機能を一つ無効にする。
 -------------------------------------------------------------------------------

オクセイダー 戦闘力 6400 → 3500

「くっ、だがダメージは受けてもらうぞ」

清太:EP 2350 メモリ 6/8 メインエディタ オクセイダー
美夢王:EP 800 メモリ 3/8 メインエディタ Vim

「俺は……ここでターンエンド」

「『インスタント・ネオ』の機能により実行した neo-Vim はこのターンの終わりに Vim
に戻る」

Vim 戦闘力 1500

かなりギリギリであったが、このターンを凌ぐことができた。
次で勝負を決めるしかないな。


--------------------------------------------------------------------------------
Scene 4
--------------------------------------------------------------------------------

- TURN 6 -

清太:EP 2350 メモリ 6/8 メインエディタ オクセイダー
美夢王:EP 800 メモリ 3/8 メインエディタ Vim

「我のターン、ロード!」

「我はプラグイン『neo-shell』を Vim にインストールする!」

「そして『neo-mru』の機能を適用する。前のターンにトラッシュに送ったコマンドを復
活させる。我が復活させるのは『インスタント・ネオ』だ。『ネオ・リーセント・エグ
ゼキューション!』」

 -------------------------------------------------------------------------------
|neo-mru:プラグイン・Vim
|機能『ネオ・リーセント・エグゼキューション』 
|前のターンにトラッシュに送ったコマンドかプラグインを特殊実行またはインストール
|する。この機能は1 ターンに一度のみ適用可能である。
 -------------------------------------------------------------------------------

「我は特殊コマンド『インスタント・ネオ』を適用する。エクストラディスクより、
neo-Vim を特殊実行」

「neo-Vim に neo と名の付くプラグインがインストールされている場合、1 つにつき戦
闘力が 800 アップする!」

neo-Vim 戦闘力 1000 → 2600

「更に、我はVimにインストールした『neo-shell』の機能を適用! メモリ上のコマン
ドを選択することでこのターンの戦闘力をそのコマンドの戦闘力と同じだけ
アップさせ、同じ機能を得る。『ネオ・プロセス・エクステンション!』」

 -------------------------------------------------------------------------------
|neo-shell:プラグイン・Vim
|このコマンドは「neo-Vim」上にインストールされている場合、次の機能が実装される。
|機能『ネオ・プロセス・エクステンション』
|自分のメモリ上の単体コマンドを選択する。このターン終了まで、そのコマンドの戦
|闘力とその機能を得る。その選択した単体コマンドが実行されていない場合、実行され
|る。この機能は 1 ターンに一度しか使用できない。
 -------------------------------------------------------------------------------

「何、お前も単体コマンドを扱うというのか」

「そう。プラグインによる Vim の拡張には限界がある。そこで我は単体コマンドの力す
ら Vim に取り込むことにしたのだ。Vim をシェルとして扱う、それが我の辿りついた単
体コマンドのやり方」

「そ、そんなの邪道だ、邪道に決まっている! なんて気持ち悪い。コマンドが悲しん
でいるはずだ」

「邪悪で結構。我の名は暗黒美夢王、闇の力でテキストエディタを支配する者だ。覚え
ておくがよい!」

「我が選択するのは『mv』コマンド! 戦闘力は 200 アップする」

清太:EP 2350 メモリ 6/8 メインエディタ オクセイダー
美夢王:EP 800 メモリ 4/8 メインエディタ Vim

neo-Vim 戦闘力 2600 → 2800

「『mv』コマンドの機能を適用する。EP を 600 ポイント支払い、自分のトラッシュに
ある単体コマンドを特殊実行する、もしくはプラグインをエディタにインストールでき
る。『ムーブ・トラッシュ!』」

 -------------------------------------------------------------------------------
|mv:コマンド
|戦闘力:200
|機能『ムーブ・トラッシュ』 EP を 600 支払う。自分のトラッシュにある単体コマ
|ンドを特殊実行する、もしくはプラグインをエディタにインストールできる。
|この機能は 1 ターンに一度適用できる。
 -------------------------------------------------------------------------------

「我がトラッシュよりインストールするのは、当然『neo-complete』。neo-complete
がインストールされたことにより、戦闘力は 800 アップ!」

neo-Vim 戦闘力 2800 → 3600

清太:EP 2350 メモリ 6/8 メインエディタ オクセイダー
美夢王:EP 200 メモリ 5/8 メインエディタ Vim

「neo-Vim に neo-completeがインストールされている場合、neo-complete の更なる機
能が解放される。メモリ上のコマンドを二つトラッシュに送ることで戦闘力は 2 倍にな
る!」

 -------------------------------------------------------------------------------
|neo-complete:プラグイン・Vim
|このコマンドは「neo-Vim」上にインストールされている場合、次の機能が実装される。
|機能『ダブル・コンプリート・フラッシュ』
|メモリ上のコマンドを二つトラッシュに送る。このターン終了まで、このプラグインを
|インストールしたテキストエディタの戦闘力は2倍となる。
|この機能は 1 ターンに一度しか使用できない。
 -------------------------------------------------------------------------------

清太:EP 2350 メモリ 6/8 メインエディタ オクセイダー
美夢王:EP 200 メモリ 3/8 メインエディタ Vim

neo-Vim 戦闘力 3600 → 7200

「これで最後だ! 『ダブル・コンプリート・フラッシュ!』」

「ぐぁああああああ!」

清太:EP 0 メモリ 6/8 メインエディタ オクセイダー
美夢王:EP 200 メモリ 3/8 メインエディタ Vim


--------------------------------------------------------------------------------
Scene 5
--------------------------------------------------------------------------------

エディットを終えた我らには、最初に存在したギスギスした雰囲気はもう存在しなかっ
た。我々はテキストエディタを通じて語り合ったのだ。

「ひっでぇな。負けちまったよ。俺は」

「お前はよくやった。まぁ、我の方が一枚上手だったがな。クックック」

「かなり危なかったくせに言ってくれるぜ。とはいえ、約束は約束だ。エディ劇の主役
はアンタのものだ」

我はそれに関して、ずっと考えていたことがあった。

「そうだな。約束は果たさねばならない。来夢、脚本を変更してもらえるだろうか。彼
に主役をやらせてほしい」

「なん……だと。正気か?」

「えっ、それは良いけれど……頼んでみるわ」

「頼む?」

彼女がシナリオを書くのではなかったか。何を頼むというのだろう。

「いえ、こっちの話よ」

「我は悪役をやってみたくなったのだ。暗黒は闇、絶対的な悪こそが我に相応しい」

「修……いや、暗黒美夢王、お前は」

「奥 清太といったな。機会があればまた相手になってやる。だがその前に、エディ劇
とやらを成功させようではないか」

「おう、任せな! お前の演技は俺がビシバシと鍛えてやるぜ」

「あんなに仲良くなって。男の考えることはやはり分からないわ」


--------------------------------------------------------------------------------
Scene 6
--------------------------------------------------------------------------------

それで結局、エディ劇はどうなったかというと……。

暗黒美夢王は人々に無理矢理 Vim をインストールして Vim 使いにしてしまうという悪
事を働いていた。
そして今日も……。

「キャー!! 暗黒美夢王よ! Vim をインストールされてしまうわ」

「お、俺にエディタをインストールしても、Vim の力には屈しないぞ」

「フハハハハ……!! 逃げても無駄だ! 世界の全てを闇のエディタの力で染めてみせる!」

「そうはさせないぜ」

「お前、何奴だ!」

「編……集! エディタの平和を守る正義の戦士、『オクセイダー』」

マントを翻し現れたのは仮面を付けた戦士であった。

「ほう……お前が我の宿敵『オクセイダー』か。こんなところで会えるとは我も運が良
い」

「正義は負けない。うぉぉぉぉぉぉぉ!」

(電子音)オクセイド・スラッシュ!

「我も本気を出すとしよう。『neo-complete』を我にインストール! 機能を適用、
『ネオ・コンプリートフラッシュ!』」



自分には演技の際の記憶がないのだが、これは相当に評判になったらしい。
これのおかげで、僕は他の人からも暗黒美夢王と呼ばれる始末で……。
僕はもっと普通の生活が送りたかったはずなのに。さようなら僕の平凡な日々。

そしてこの劇が新たな出会いを生み出すことに僕はまだ気付くことはなかった。

今日のバトルエディターズ豆知識:
単体コマンドはそれぞれが戦闘力と固有の機能を持つ。単体コマンドは戦闘力は低い
が、手数の多さと展開の早さが長所となる。舐めてかかると痛い目を見るだろう。
戦闘力が上回れば単体コマンドを破壊することができる。しかし、単体コマンドを破壊
しても EP へのダメージにはならない。エディタへのバトルが可能ならば、エディタへ
のバトルを優先するべきである。

(「第5話:バイナリアンの襲来」に続く……)

2014年8月3日日曜日

momonga.vim #6 の感想

momonga.vim #6 の感想

※:今回は暗黒美夢王語と日本語の二ヶ国語でお送りします。

皆の者、よくぞこのページを見てくれた。我の名は暗黒美夢王である。Shougo ? 誰だ
それは。感想を書くまでが momonga.vim らしいので、今回は momonga.vim #6 の感想記
事を書く ことにした。

我のことをよく知る者なら当然知っていると思うが、我が勉強会に参加するのは半年以
上ぶりである。なぜこれまで、我が参加できなかったかは色々あったので省略する。
人はテキストエディタを考えるだけでは生きていけないのだ……。
しかし今回は C++ 暗黒の軍団の一人として名高い江添氏が参加されるということで、
これは我も参加するしかないということで、滑り込んだわけである。

我のもくもくの成果は vimfiler の修正と、neocomplete の include 補完の分離であ
る。vimfiler の修正は完了したが、ちょっと変更量が多いので様子を見るためまだ
push できていない。include 補完に関しては、未完成である。

江添氏と会うのは初めてであったが、自分の信念をしっかりと持っている人だと感じ
た。もっと対談的なものをやってみたかったが、もくもく会だったので仕方ない。
懇親会?会場の妖怪ハウスでは、江添氏特製のピザをご馳走になった。氏には今回の勉
強会でもいろいろと差し入れをしてもらったり、かなりお世話になった。

最後まで忘れていたが、Vim スクリプトテクニックバイブルがようやく発売されたよう
である。Vim スクリプトテクニックバイブルを会場まで持ってきている者がいたので、
宣伝に使用させてもらった。この本は光の Vimmer も闇の Vimmer もどちらにも役立つ
ようにし たつもりだ。書店で見掛けたらぜひ購入の検討もお願いする。

-----------------------------------------------------------------------------
日本語
-----------------------------------------------------------------------------
みなさん、こんにちは。このページを見てくれてありがとうございます。私は Shougo
です。暗黒美夢王? 誰ですか。それは。momonga.vim #6 に参加したのですが、感想を書
くまでが momonga.vim らしいです。今回は momonga.vim #6 の感想記事を書くことにし
ました。

皆さんは知っているかもしれませんが、私が前回勉強会に参加したのは半年以上前です。
なぜこれだけ間が空いてしまったのかについては、色々あるので省略します。
人は残念ながらテキストエディタだけで生きることは難しいのです。
今回は C++ のすごい人として有名な江添さんが参加されるとのことで、私も参加するし
かないと思いました。

私の今回の成果は vimfiler の修正と、neocomplete の include 補完の分離です。
vimfiler の修正は完了したのですが、ちょっと変更量が多すぎて push には様子を見な
いといけません。include 補完に関しては未完成で、公開までは遠いです。

江添さんと会うのは初めてでしたが、自分の信念をしっかりと持っている人だなと感じ
ました。江添さんとはもっと対談的なものをやってみたかったのですが、今回はもくも
く会だったのでそれはかないませんでした。懇親会?会場の妖怪ハウスでは、江添さん
特製のピザをご馳走になりました。江添さんには会場の提供だけでなくいろい ろと差し
入れをしてもらい、かなりお世話になりました。ありがとうございます。

最後まで忘れていたのですが、私も執筆を行った Vim スクリプトテクニックバイブルが
ようやく発売されたよう です。Vim スクリプトテクニックバイブルを会場まで持ってき
ている人がいらっしゃったので、宣伝に使わせてもらいました。ありがとうございま
す。この本はプラグインを書く人も書かない人も役立つ内容になったと思います。書店
で見掛けたらぜひ購入の検討をしていただけないでしょうか。

2014年7月11日金曜日

「Vim script テクニックバイブル ~Vim使いの魔法の杖」について

皆の者、我は暗黒美夢王である。執筆者の一人である Shougo に頼まれ、今回は我が「Vim script テクニックバイブル」の紹介を行う。
この書籍に関しては mattn 氏が既に紹介しているので、できるだけ被らない情報を出していくことにするぞ。

最初に注意してもらいたいが、これは「純粋な Vim script の学習のための本」であ
る。よって、Vim プラグインについては一部を除き全く取り上げていないので注意する
ように。Vim プラグインについて知りたかったら、前作である「Vim テクニックバイブル」を参照するのだ。もちろん、書籍中に暗黒美夢王が登場したりといったサプライズもないぞ。

これまで Vim script を学ぶ修行というのは険しく、辛いものであった。
我も「闇の Vim の使用法を極める」という職業柄、他人より「Vim scriptを学ぶにはど
うすればよいか」を聞かれることがあ り、その度に苦しんだ。我が Vim script を学ぶ
ことができたきっかけは Vim plugin を書いたからである。その上で、徐々に知識を
アップデートしていったのだ。

Vim script の知識は Vim plugin や Web, :help で吸収することができる。
しかし、 Vim plugin のソースコードや Web の情報は初心者には正しいかどうか分から
ないし、:help は内容が正確だが分かりにくい。
この書籍は執筆時点での最新版である Vim 7.4 に対応しているうえに執筆陣は大ベテラ
ンなので極めて信頼のおけるものである。「Vim script を学ぶためのとっかかり」と
なり、「迷ったときにすぐに戻ってこれる」ものとなるだろう。

これより、内容の紹介に移る。

第一章は Vim script の基本を解説している。紹介している事項は極めて基本的なもの
であるが、読者が Vim script について全く知らない場合は、ここを読むだけでも勉 強
になるであろう。

第二章は Vim script の実行方法と一通りの文法を解説している。第一章と同じく、初
心者には極めて有用な章である。

第三章は応用編となる。silent, execute, マッピングなど、Vim script を書く上
で重要なテクニックについて紹介している。これは本格的に Vim plugin を書きたい場
合に必要となる知識だ。

第四章は Vim script の実行方法である。Vim script はどのようにして実行されるのか
を知ることができる。キーマッピングや補完についても解説されている。

第五章は簡単な Vim plugin を作成し、これまでの復習を行う。

第六章は組み込み関数リファレンスである。Vim script でよく使われる関数をまと
め、:help に載っていない Tips 情報をできるだけ紹介した。これは書籍にしかできな
いことであり、この本はこの章だけでも購入する価値があるはずである。
ちなみに、Vim script のよく使う関数しか解説していないにもかかわらず、この章だけ
で 40 P を越えている。

第七章は上級編である。Vim script のデバッグ情報、高速化の方法、最小構成の作り
方、Web API を Vim から使う方法、vimproc、外部インタフェースについてなどが載っ
ている。

mattn 氏も書いているように、この書籍の執筆には KoRoN 氏の尽力が必要不可欠であっ
た。KoRoN 氏がいなければ、この本が出版されることはなかったであろう。我からも、
ここに感謝の意を表明しておきたい。

さて、豪華な執筆陣と確実な内容、賢明な読者は値段が気になっているのではないだろうか。
「でも、お高いんでしょう?」
「こんなにも内容が充実した書籍がなんと 2786 円(消費税 8% 税込) !」
消費税が上がり、世知辛い世の中になんと 2786円(消費税 8% 税込) なのである。
前作の Vim テクニックバイブル(3218 円:税込)よりも安く、値段が 3000 円を余裕で切ってい
るのはもはや脅威だ。個人的には 3000 円を切るか切らないかで書籍の購入のための心
理的障壁がかなり異なる。特に学生にはこの点が重要となるだろう。

これを読んでいる君、悪いことは言わない。この書籍の発売後には書店へ急ぐべきである。そして我の言っていることが真実であるのかどうか、その目で確かめてほしい。

2014年4月2日水曜日

Web 製作者のための Sublime Text の教科書レビュー

この記事は Vim Advent Calendar 2013 123日目の記事である。今回は先日発売された
Web 製作者のための Sublime Text の教科書」のレビューを行う。えっ、Vim の話題
じゃないって? Vimmer の間には Sublime Text の書籍に興味がある者もいるだろう
し、「Vimmer の視点で見た Sublime Text 本のレビュー」というのは VAC のネタとし
て十分需要があると判断したのだ。VAC は執筆が綱渡りの状態のようだし、ここで支援
しておこうと思ったのも理由としてある。バトルエディターズでもお 馴染みかもしれな
いが、Sublime Text は Web 界隈を中心に最近人気を博して いるテキ ストエディタで
ある。

Sublime Text は Dreamweaver 等からの移行はよく見掛けるが、Emacs/Vim からの本格
的な移行はそれほ ど多くない。ただし、Emacs/Vim に馴染めなかった層の取り込みは
狙っているようであ る。Sublime Text はテキストエディタだが、IDE 的な機能も取り
込んでおり、エディタ と IDE の中間的存在と理解するとよいだろう。あらゆる意味
で、「イマドキのテキスト エディタ」なのである。Emacs/Vim よりも機能が整理されて
いる分拡張性は低いが、後発なだけに 設計が洗練されているとも言える。

この本は「Web 製作者のための」と冠するだけあってなんとフルカラーであり、画面写
真をふんだんに盛り込んでいる。HTML, CSS, JavaScript 関連の本はフルカラーである
ことが多いので、それらをイメージしてもらうとよいだろう。これが Emacs/Vim の教科
書ならばフルカラーというのはまずありえない。ユーザー層の違いを垣間見る ことがで
きる。多数のスクリーンショットはとても分かりやすく、初心者には理解が早いに違い
ない。

もちろん、Sublime Text のパッケージマネージャである Package Control についても
触れられている。私はこの本で Sublime Text のパッケージマネージャが以前のバー
ジョンのプラグインをバックアップしていることを知った。自作パッケージの作り方も
多少解説をしている。とはいえ、それがこの本のメインではないので簡単に流される程
度である。

この本で一番役立つといってよい部分はプラグインの紹介である。多数の Sublime Text
のプラグインがスクリーンショット付きで解説されている。私は Sublime Text ユー
ザーではないのだが、普通の人はここだけでこの本の元は取れるかもしれない。ただ
し、パッケージのチョイスが Web 系(特にデザイナー系)に偏っているので注意してほし
い。「Web 製作者のための」本であるので当然だが、それを予め理解しておかないと
「自分の必要なプラグインは紹介されてなかった」となりかねない。

最近開発が進んでいるバージョンである Sublime Text3 にも対応。Sublime Text3 は機
能の改良が進んでいるらしく、これが広く使われるようになれば Sublime Text は第三
のエディタとして更に頭角を表してくる可能性はある。

Vim ユーザーとして見ても、この本は十分に価値のあるものだった。今は別のエディタ
を使っている人達もこの本を読んで Sublime Text について勉強することは悪くないと
思う。私はせっかくだから、この本で勉強した知識をバトルエディターズ中で生かせな
いものかと考えている。

2013年12月19日木曜日

特技はVim

面接官「特技はVimとありますが?」
学生 「はい。Vimです」
面接官「Vimとは何のことですか?」
学生 「テキストエディタです」
面接官「え、テキストエディタ?」
学生 「はい。テキストエディタです。オープンソースで開発され、無料で利用できます」
面接官「・・・で、そのVimは当社において働くうえで何のメリットがあるとお考えですか?」
学生 「はい。テキストファイルを編集できます」
面接官「いや、当社には編集するようなテキストファイルはありません」
学生 「でも、バトルエディターズではあのEmacsにも勝ってるんですよ!」
面接官「いや、勝つとかそういう問題じゃなくてですね……」
学生 「VimはVimプラグインも使えるんですよ」
面接官「ふざけないでください。それにプラグインって何ですか。だいたい……」
学生 「Vimプラグインです。Vimプラギンという人もいます。プラグインというのは……」
面接官「聞いてません。帰って下さい」
暗黒美夢王 「クックック……我を怒らせてしまったようだな。我がVimの力を見せてやろう」
面接官「いいですよ。見せて下さい。Vimの力とやらを。それで満足したら帰って下さい」
暗黒美夢王 「フハハハハ!!!。命拾いをしたな。このVimにはif_luaが有効化されていないようだ」
面接官「帰れよ」

2013年11月17日日曜日

暗黒美夢王が見た VimConf2013(ぼくの VimConf2013のかんそう)

皆の者、久しぶりだな。我は暗黒美夢王である。今回は、VimConf2013 に参加してきた
ので感想記事を書いておきたいと思う。これを読むだけでは内容が全く分からないかも
しれないが、それは仕様である。詳しくは公開されたスライドをチェックするほうがよ
いだろう。

1. 「How to suggest new features for Vim」 by KoRoN 氏


光のVimの伝導者である KoRoN 氏の発表であった。
Vim にパッチがマージされるためにはどのようにすればよいか、氏の具体的なパッチを
挙げてまとめられていた。我ら闇のVimmerにとっては、基本的に闇(プラグイン)の力で
Vimを改造していくため、パッチという方法はあまり行われない。
それでも、プラグインを改良するためにパッチという力が必要なときはあるので、この
発表は有意義なものであった。

2. 「Evil is justice」 by esehara 氏


Emacs で Vim を模倣する Evil-mode の紹介。
我は中途半端な Vim 化が大嫌いなので、こういう機能は使わないが、一部には需要があ
るのだろう。彼は Emacs 使いなのに編集方法が Vim に傾いているので Emacs 界隈では
異端児なのだと思われる。闇の Emacs 使いとは彼のような人達のことをそう呼ぶのかも
しれない。

3. 「Vim から Git を使う」 by cohama 氏


Vim から Git を快適に使うための方法の解説。これだけを聞くと闇のVimmer 向けの発
表に思えるかもしれないが、デフォルトの環境で Vim から Git を使うための方法も紹
介されており、なるほどと感心した。光の Vimmer にも有意義な発表だったと言えるだ
ろう。

4. 「vital.ProcessManager」 by ujihisa 氏


Vital の ProcessManager モジュールの解説。我はまだ使ったことがないのだが、面白
いプラグインだとは思った。vimshell もこれで書き換えるべきなのかもしれないが、ま
だ保留である。我にはもっとやらないといけないことが残っているからな……。

5. 「Vim の RUNTIME の話」 by Linda_pp 氏


Vim に標準添付されるプラグインの解説。これまであまりまとまって解説されることは
なかったので、光の Vimmer にはよい発表だったのではないだろう か。

6. 「How to write patch to Vim」 by k_takata


Vim 界のパッチ職人である k_takata 氏の発表。パッチの書き方について、具体的な話
をしていた。パッチを書く前の話に重点を置く KoRoN 氏の発表とは微妙に切り口が違っ
ていて、内容が被っていなかったのはよかった と思う。「お気に入りのパッチ」という
表現に、氏の並々ならぬパッチへの愛情を感じた。我々がプラグインを愛するように、
彼はパッチそのものを愛してやまないのだろう。

7. LT 「iVimConf作りました」 by dictav 氏


iVimConfアプリを作った人の話である。このアプリ、せっかくなので他のイベントにも
活用できないものだろうか?

8. LT 「Emacs の紹介」 by kiwanami 氏


Vim 勉強会で Emacs の話をするとは、氏の勇気に敬意を表さざるをえない。
まぁ、我も Emacs 勉強会にて Vim の話をした過去があるのだが……。
ちなみに kiwanami 氏が意外と Vim を使っていることには驚いた。
Emacs を鍛えるのにはピアノ、暗黒美夢王覚えた。

9. LT 「duzzle.vim」 by deris01216 氏


Vim script で書いた迷路脱出ゲームの紹介。
我はプラグインにしか興味がないのでゲームは作れないが、こういったものが多く登場
してくると面白いように思う。

10. 「About of neocomplete」 by 暗黒美夢王


最後の発表は、我による neocomplete プラグインの紹介記事であった。
詳細はスライドのほうを参照してほしい。発表中に暗黒美夢王の精神が不安定になり、
Shougo の人格に切り替わることがあったのが反省点であった。やはり暗黒美夢王の人格
を長時間維持するのは難しい。次回は改善したいと思う。

2013年11月9日土曜日

Vim Advent Calendar 337日目:「バトルエディターズ 第三話:宿命の対決」

※:この投稿には暗黒美夢王成分が大量に含まれています。ネタをネタと分かる人だけが読んでください。実在する人物・団体・テキストエディタ・アニメとは一切の関係がございません。

クックック……。我の名は暗黒美夢王だ。宿主であるShougoには、しばらくの間眠っていもらっている。これは Vim Advent Calendar の第337日目である。次回はmittan氏の「MacのVimで通知センターを使う」だ。Vimmerならフォローしておくように。

さて、今回はVACでバトルエディターズの第三話を発表することにした。本当はVACの一部ではなく、普通にこのブログ内で発表する予定だったのだが、欠番となった337日目を書く者が誰もいないと聞いたので、急遽我が代役として記事を書くことになったのだ。「純粋な」Vimの記事を期待したものにはいささか期待はずれかもしれんが、正式な記事(344日目)は本日manga_osyo氏が書いてくれることだろう。

第一話第二話の復習は済ませたか? 狂気の世界の始まりといこう……。

------------------------------------------------------------------------------------------------
編集王(エディットキング) バトルエディターズ
第3話:宿命の対決

注意:この物語はフィクションです。実在する人物・団体・ソフトウェア・テキストエ
ディタとは一切の関係がありません。宗教論争をする意図もありません。

注意:この物語を読んだところで、テキストエディタの知識が付くわけがありません。
物語中に存在するテキストエディタのネタはオマージュ程度であり、知っている人がほ
くそ笑む程度のものです。期待しないようにしましょう。

注意:この物語は皆の反応を見るためのテスト版であり未完成です。話の内容は予告な
く変更される可能性があります。

「ルールを守って楽しくエディット!」

--------------------------------------------------------------------------------
Scene 1
--------------------------------------------------------------------------------

「修君、昨日の Vim エディタについて、先生に詳しい話を聞かせてもらえるだろう
か?」

僕は登校そうそう、海(かい)先生に呼び出されていた。

「な、なんの話でしょうか……」

「とぼけても無駄だよ。私も含めて、みんな見ているんだ」

さっぱり分からないが、僕が Vim を持っていることがバレてしまっているらしい。
どうすれば……。

「とにかく、一度ディスクの中身を確認させてもらうよ。変なソフトウェアが仕込まれ
ていてはいけないからね」

ほとんど無理矢理に僕のディスクがスキャンされていく。ただ、先生はスキャン結果を
見ながら首を捻っていた。

「うーーーん、おかしいな。特に変なデータはない……。私の見間違いだったのだろう
か。うむ、教室に戻っていいぞ」

「では、失礼します……」


「んで、修どうだったのよ」

僕の元に現れたのは来夢ちゃんだった。よく分からないけれど、ずいぶんと僕に絡んで
くるようになった気がする。僕は彼女になにかしただろうか。記憶がないんだよなぁ。

「僕が Vim を持っているんじゃないかってさ。まあでも見つからなかったんで、早々に
終わったよ」

実は持っているわけなんだけどね。なんで見つからなかったんだろう。
そのおかげで僕は助かったわけだけど。

「Vim が見つからなかったの。そう。それは不思議ね……」

--------------------------------------------------------------------------------
Scene 2
--------------------------------------------------------------------------------

「さーて、今日こそは早く家に帰って Vim を愛でる作業に戻るぞー」

このまま学校に残っていたら、何をされるか分からないからね。昨日はできなかった、
Vim にあんなことや、そんなことを……。

僕を帰宅途中の生徒達が遠巻きに眺めている。いかんいかん。
このままでは、皆から僕はテキストエディタで妄想する変態に思われてしまう。

「なんだろ、これ」

靴箱の中に何か入っている。確認してみるとそれは手紙のようであった。

『昨日のエディット拝見しました。ぜひ、放課後校舎裏に来てください。話したいこと
があります by あなたの永遠のライバル』

「まさか……これはラブ・レター!」
なんということだ。学生時代における伝説のアイテム。実際に存在したというの
か……。Vim を手に入れてから僕は運が向いてきたようだ。
テキストエディタだけじゃなくて彼女までゲットするだなんて。ぐへへ。
『まったく、テキストエディタではなく女にうつつを抜かしおって……』

「ん、誰の声だろ……誰もいないか」

僕はそのまま校舎裏へと急ぐのだった。そこで待っていたのは、

「ようやく来たか……我が永遠のライバル」

「誰、キミ。僕は女の子に呼び出されて……」

「それを出したのはこの俺だ。俺の名前は楠崎遠馬(くすざきえんま)。覚えておけ」

「なん……だって? 僕の純情を返せよ、うわーん」

「ごちゃごちゃうるさい奴だな。嘘は言っていないぞ。『昨日のエディットを見てい
た』から俺はお前に興味を持った。Emacs 使いという Vim の永遠のライバルが、校舎裏
に呼び出したのだ。要件は一つしかなかろう。早く俺とエディットをしろ」

「た、確かに言われてみるとそうかもしれないけど、僕の純情を弄ぶなんて許さない
ぞ。勝負だ!」

Vimを手に入れた僕に怖いものなんてない。怒りに任せて勝利を挑む。

遠馬:EP 4000 メモリ 4/8 メインエディタ Emacs
修:EP 4000 メモリ 4/8 メインエディタ vi

「「編集(エディット)!」」

「あれ、Vimが見当たらない。なんで代わりに vi を実行していることになっているん
だ?」
「Vim の代わりに vi とは、俺も舐められたものだな」

「ちょ、待って、違うんだ。ぐわーー」

遠馬:EP 3000 メモリ 7/8 メインエディタ Emacs
修:EP 0 メモリ 5/8 メインエディタ vi

「ぐはぁ……。つ、強い」

僕は彼に全然歯が立たなかった。初めて Emacs とエディットしてみたけど、こんなに強
いだなんて。

「全く、他愛もないものだ。本当にコイツが昨日 Sublime 使いを破ったというのか?」
vi では俺に敵わないことは分かっただろう。そろそろお前の Vimを見せてみろ」

「実行したいんだけど、実行できないんだよ。ぐふっ」

『全く、我の契約者ともあろう者がふがいないものだな』
「誰だよ君は……」
『我の名は暗黒美夢王(ダークビムマスター)。後は我に任せて眠っておけ』
「暗黒美夢王……? もう、眠くてなにも考え……」

そして、僕の意識はまた闇へと堕ちるのだった。

--------------------------------------------------------------------------------
Scene 3
--------------------------------------------------------------------------------

宿主と交代で我の意識が覚醒する。

「ふあーぁ。さすがにまだ寝たりないな」

「なんだ、こいつは……」

「ほう、お前が宿主をコテンパンにしていたのだな」

「さっきとは雰囲気が違う。噂通りか、ようやく出て来たな Vim 使いよ」

「我を待っていたのか。モテる男はつらいものだ。どうせならテキストエディタにモテ
たいところであるが」

「俺の名前は楠崎遠馬。そこの Vim 使い、Emacs の使い手である俺と勝負しろ!」

「正直、Emacsとのエディットはとうの昔に飽きている。我としてはピチピチの新しいエ
ディタとエディットしたいものだ。クックック……」

「気持ち悪いやつだな」

「どうしても我とエディットしたいというのなら一つ問おう」

「何だと?」

「簡単なことだ。お前にとってテキストエディタは何だ」
これは我にとって重要な質問である。さて、何と答えるのだろうか。

「テキストエディタか。何を聞くかと思えば下らないな」

「いいから答えてみろ。返答次第ではお望みどおり勝負してやってもよい」

「フン、テキストエディタは俺にとってただの道具にすぎない。Emacs は単純に俺の編
集速度に付いてこれたから使ってやっているだけだ。俺はテキストエディタを使って世
界を支配する。そのためにはまず、Vimの後継者というお前をエディタバトルで破る必
要が……」

「クックック……フハハハハ!」

「何がおかしい」

「もう十分だ。お前は我に『怒り』というイベント名の autocmd を発動させてしまった
(お前は私を怒らせた)ようだ。当然、我はこれをハンドルするわけだが、覚悟はで
きているだろうな」

遂に我を本気で怒らせるものが現れたらしい。これほどの回答があるとは。クックッ
ク、これは胸が踊る。

「何を言っているのかさっぱり分からん。勝負するのかしないのか、ハッキリしてもら
おう」

「我が名は暗黒美夢王(ダークビムマスター)だ、覚えておけ。さっきの台詞聞こえてい
たぞ、Emacs使い。Vim使いである我との勝負を望んでいるのであろう? 良いだろう。
受けてやる」

「フ、フン。まぁ良い。この俺にお前の力を見せてみろ。俺の Emacs で貴様のエディタ
を叩きのめすぜ」

「さあ、エディット・タイムだ!」

両者、再度エディタディスクを構える。

「エディタディスク セット!」
「メインエディタ 実行開始!」

「Vim 実行」
「Emacs 実行」

「AR モニター リンク完了!」
「「編集(エディット)!」」

--------------------------------------------------------------------------------
Scene 4
--------------------------------------------------------------------------------

- TURN 1 -

遠馬:EP 4000 メモリ 4/8 メインエディタ Emacs
美夢王:EP 4000 メモリ 4/8 メインエディタ Vim

Emacs 戦闘力 0
Vim 戦闘力 1000

「Emacs は他のエディタと異なり、エディタの基本戦闘力が 0 だ。ただし……Emacs が
実行されたことにより、Emacs の機能が自動で適用される。プラグイン『el-package』
をディスクから自動でインストールする。『パッケージ・イニシャライゼーション!』」
「何だと……。最近のEmacsにはこんな機能が付いていたのか。面白い」
「プラグインがインストールされたことにより、Emacs の戦闘力は 800 アップ!」

Emacs 戦闘力 0 → 800

遠馬:EP 4000 メモリ 5/8 メインエディタ Emacs
美夢王:EP 4000 メモリ 4/8 メインエディタ Vim

「先攻は我が貰う。我のターン、ロード!」
「我はプラグイン『neo-snippet』を Vim にインストール! さらに neo-snippet の機能
を適用。EP を 500 支払うことで、メモリ上に neo-snippet トークンをプラグイン扱い
でエディタにインストールする。『ネオ・スニペット・エキスパンション!』」

Vim 戦闘力 1000 → 1500 → 2000

「先攻は最初のターン攻撃できない。ターンエンドだ」

「ほう、それが噂に聞く neo シリーズのプラグインだな。俺のターン!」

遠馬:EP 4000 メモリ 5/8 メインエディタ Emacs
美夢王:EP 3500 メモリ 6/8 メインエディタ Vim

「俺はロードをスキップし、 Emacs に標準でインストールされているプラグイン
『el-package』の機能を適用する! 『パッケージ・インストレーション!』」

「el-package の機能により、俺はディスクからプラグインをランダムで一つ Emacs に
インストールすることができる。俺がインストールするのは『el-popup』。プラグイン
がインストールされたことにより、Emacs の戦闘力は 800 アップ!」

Emacs 戦闘力 800 → 1600

遠馬:EP 4000 メモリ 6/8 メインエディタ Emacs
美夢王:EP 3500 メモリ 6/8 メインエディタ Vim

「後攻はすぐに攻撃が可能だが、エディタの戦闘力が満たない。俺はここでターンを終
了する。命拾いしたな」

- TURN 2 -

「我のターン、ロード! 我はプラグイン『neo-interface』を Vim にインストールす
る。このプラグインは秘められた機能を持つが、このプラグインは起動が
遅いので、インストールされたターンは機能を適用できない」

遠馬:EP 4000 メモリ 6/8 メインエディタ Emacs
美夢王:EP 3500 メモリ 7/8 メインエディタ Vim

Vim 戦闘力 2000 → 2500

「だが、これで Vim の戦闘力は十分増加した。Vim で Emacs に対してバトル!」
「ぐぅ……。この俺が先に攻撃を受けるとは」

遠馬:EP 3100 メモリ 6/8 メインエディタ Emacs
美夢王:EP 3500 メモリ 7/8 メインエディタ Vim

「我はこれでターンを終了する。さあどうする? Emacs 使い」

「俺の名前は遠馬だ。覚えておけ。el-package の機能により、俺はディスクからプラグ
インをランダムで一つ Emacs にインストール! 俺がインストールするのは
『el-complete』。プラグインがインストールされたことにより、Emacs の戦闘力は 800
アップ!」

Emacs 戦闘力 1600 → 2400

「しかし、我の Vim のほうが戦闘力が上だ」

「それはどうかな。『el-popup』と『el-complete』の二つがメモリ上に存在
することで、俺は『el-complete』の効果を適用する! このターン、Emacs
の戦闘力を 1.5 倍にする。『オート・ポップアップ・コンプリション』」

「なんだと……?」

 -------------------------------------------------------------------------------
|el-complete:プラグイン・Emacs
|このプラグインは Emacs にのみインストールすることができる。
|機能『オート・ポップアップ・コンプリション』 この機能は『el-popup』がエディタ
|にインストールされている場合のみ適用可能である。このターン終了まで、このプラグ
|インをインストールしたテキストエディタの戦闘力は1.5倍となる。この機能は1 ター
|ンに一度のみ適用可能である。
 -------------------------------------------------------------------------------

Emacs 戦闘力 2400 → 3600

「戦闘力 3600 か。さすがにやるものだな」

「Emacs で Vim にバトル!」

「くぅ……」

「俺はここでターンを終了する。Emacs の戦闘力は元に戻る」

Emacs 戦闘力 3600 → 2400

- TURN 3 -

遠馬:EP 3100 メモリ 7/8 メインエディタ Emacs
美夢王:EP 2400 メモリ 7/8 メインエディタ Vim

「我のターン、ロード。我は『neo-interface』の機能を適用する! 自分の
メモリ上のコマンドを Vim プラグイン扱いでインストールする。『ネオ・イ
ンタフェース・インテグレーション!』」

 -------------------------------------------------------------------------------
|neo-interface:プラグイン・Vim
|このプラグインは Vim にのみインストールすることができる。
|機能『ネオ・インタフェース・インテグレーション』 自分のメモリ上にある未実行の
|任意のコマンドをVim プラグイン扱いで Vim にインストールする。インストールした
|コマンドは実行できない。コマンドの機能はそのまま適用できるが、コマンドの機能を
|適用した場合、コマンドをトラッシュに送る。この機能はインストールしたターンには
|適用できず、1 ターンに一度のみ適用可能である。このプラグインがトラッシュに送ら
|れる場合、この機能でインストールされたプラグインをトラッシュに送る。
 -------------------------------------------------------------------------------

Vim 戦闘力 2500 → 3000

遠馬:EP 2200 メモリ 7/8 メインエディタ Emacs
美夢王:EP 2400 メモリ 7/8 メインエディタ Vim

「俺のターンだ。el-package の機能により、俺はディスクからプラグインをランダムで
一つ Emacs にインストール! ここで Emacs の戦闘力が更に 800 アップ」

Emacs 戦闘力 2400 → 3200

「俺はさらにここで、特殊コマンド『インスタント・プラグイン』の機能を適用する!
このターンにインストールしたプラグインの機能を無効にすることで、プラグイントーク
ンをエディタにインストールする」

遠馬:EP 2200 メモリ 8/8 メインエディタ Emacs
美夢王:EP 2400 メモリ 7/8 メインエディタ Vim

Emacs 戦闘力 3200 → 4000

「まだだ! ここで俺は『el-complete』の効果を適用する! このターン、Emacs
の戦闘力を 1.5 倍にする。『オート・ポップアップ・コンプリション』」

Emacs 戦闘力 4000 → 6000
Vim 戦闘力 3000

「Emacs は Vim にバトル!」

「くっ、これが通れば負ける……」
我の Vim を Emacs の一撃が襲う!

--------------------------------------------------------------------------------
Scene 5
--------------------------------------------------------------------------------

「ここまでだな、Vim 使い。いくら Vim といえども Emacs には勝てないのだ。これは
今までの歴史が証明して……」

遠馬:EP 2200 メモリ 7/8 メインエディタ Emacs
美夢王:EP 900 メモリ 6/8 メインエディタ Vim

「なん…だと?」

「ふう、危ないところだったな。我はさっきの攻撃の瞬間、特殊コマンド『テキストエ
ディタを、あきらめない』を適用していた! 我とテキストエディタは深い絆で結ばれて
いる。たとえ何があろうともテキストエディタを諦めない、それが我のポリシーだ。
『ネバーギブアップ・エディタ!』」

 -------------------------------------------------------------------------------
|テキストエディタを、あきらめない:特殊コマンド・速攻(クイック)
|機能『ネバーギブアップ・エディタ』 このターン受けるダメージを半分にし、エディ
|タが受けたダメージの半分をエディタの戦闘力に加える。このコマンドの機能は相手の
|ターンでも適用できる。
 -------------------------------------------------------------------------------

Vim 戦闘力 3000 → 3750

「戦闘力も上がって……くっ。ここでターンエンドだ」

Emacs 戦闘力 4000

- TURN 4 -

「我のターン、ロード。我は再度 neo-interface の機能を適用する。これに
より、Vim の戦闘力は 500 ポイントアップ!」

Vim 戦闘力 3750 → 4250

遠馬:EP 1950 メモリ 8/8 メインエディタ Emacs
美夢王:EP 900 メモリ 7/8 メインエディタ Vim

「前のターンはうまくかわされたが、今度こそお前の最後だ! 俺のターン、ロード」

「フン、お前のメモリをよく見てみろ。ロードするべきメモリは既に埋まっている。メ
モリが一杯の状態でロードした場合、メモリに入りきらないコマンドはランダムで破壊
される。さて、何のコマンドが破壊されるかな?」

「俺の el-complete が!」

Emacs 戦闘力 4000

「おっと残念、君の『el-complete』はトラッシュに送られてしまったようだ。これでは
自慢の補完機能が使えないな」

「くっ……。計画が崩れたか。だがまだ手はある。俺は、プラグイン
『el-file』の機能を適用する。EP を 500 支払うことで、メモリ上のコマ
ンドを Emacs プラグイン扱いとしてインストールする。『イーマックス・ファイル・オ
ペレーション!』」

遠馬:EP 1450 メモリ 8/8 メインエディタ Emacs
美夢王:EP 900 メモリ 7/8 メインエディタ Vim

Emacs 戦闘力 4000 → 4800

「Emacs で Vim にバトル!」

「ぐぅううう」

遠馬:EP 1450 メモリ 8/8 メインエディタ Emacs
美夢王:EP 350 メモリ 7/8 メインエディタ Vim

「少し残ったか。だが、もはやお前のエディタはクラッシュ寸前。次の俺のターンがお
前の最後だ!」

- TURN 5 -

「それはどうかな。我を仕留め損なったことをお前は後悔することになるだろう。だ
が、さすがは Emacs 使いだ。我をここまで追いつめるとは。我に本気を出させたこと、
光栄に思うがよい!」

「何、今までは手を抜いていたというのか」

我の手に光が宿る。今こそ、あのコマンドをロードする時。

「これこそが我の本気のロードだ。一流のエディタ使いのエディットは全てが必然。
ロードするコマンドすらこの手で創造する。シャイニング・ロード!」
「なん……だと? インチキロードもいい加減にしろ!」

遠馬:EP 1450 メモリ 8/8 メインエディタ Emacs
美夢王:EP 350 メモリ 8/8 メインエディタ Vim

「我が創造(ロード)したのは、特殊コマンド『neoの覚醒』。『neoの覚醒』の機能を我
が Vim に適用する。Vimは真(ネオ)の力によって新たな進化を遂げる。覚醒せよ、『ネ
オ・ビム・エグゼキューション!』」

 -------------------------------------------------------------------------------
|neo の覚醒:特殊コマンド
|機能『ネオ・ビム・エグゼキューション』 3 つ以上の『neo』と名の付くプラグイン
|をインストールした Vim をトラッシュに送り、『neo-Vim』をエクストラディスクより
|特殊実行する。
 -------------------------------------------------------------------------------

 -------------------------------------------------------------------------------
|neo-Vim:エディタ 基本戦闘力 1000
|このコマンドは直接実行できない。『neoの覚醒』の機能によってのみ実行することが
|できる。このエディタはVimとしても扱う。
|機能『???』
|Vimがneo(真)の力を引き出すことによって生まれた新たなエディタ。neo のプラグイン
|と組み合わせることでその真価を発揮する。
 -------------------------------------------------------------------------------

neo-Vim 戦闘力 4750

「neo-Vim の機能を適用。このコマンドは neo と名のつくインストールされたプラグイ
ン x 800 ポイント戦闘力を上げる。既にインストールされた neo という名のプラグイ
ンは 3 つ。よって、900 ポイントアップ!」

Vim 戦闘力 4750 → 5650

「戦闘力が俺の Emacs を上回ったか。だが、この程度なら次のターンさえくれば……」

「クックック……。お前は次のターンが本当にあると信じているのか? 我はさらに、
neo-Vim のもう一つの機能を適用。このコマンドにインストールされた、neo-と名の付
くプラグインは新たな機能が追加される。これがプラグインの真(ネオ)の力だ。『ネ
オ・エボリューション!』」

「コマンドの機能解説文が書き換えられるだと? そんな機能があるはずが……。まさ
かお前は伝説の創造主(クリエータ)だというのか」

「我は覚醒した neo-interface の真の機能を適用する。メモリ上のコマンドを Vim
plugin 扱いで neo-Vim にインストールする。我が選択するのはお前のメモリ上の
『el-popup』だ。『ネオ・コンバージョン!』 」

 -------------------------------------------------------------------------------
|neo-interface:プラグイン・Vim
|このコマンドは「neo-Vim」上にインストールされている場合、次の機能が実装される。
|機能『ネオ・コンバージョン』
|相手のメモリを含むメモリ上の全てのコマンドの中から一つを neo-Vim にインストー
|ルする。そのコマンドは Vim plugin として扱う。機能も通常通り適用できるが、機能
|を適用した場合にはコマンドはトラッシュに送られる。この機能によりインストールさ
|れたコマンドはこのコマンドがトラッシュに送られた場合にはトラッシュに送られる。
|この機能は 1 ターンに一度しか使用できない。
 -------------------------------------------------------------------------------

「なんだと? 俺のプラグインが Vim 使いなんぞに奪われるとは……」

neo-Vim 戦闘力 5650 → 6450
Emacs 戦闘力 4800 → 4000

「我は neo-Vim で Emacs とバトル!」
「ぐ、ぐわぁぁぁ!」

遠馬:EP 0 メモリ 8/8 メインエディタ Emacs
美夢王:EP 350 メモリ 8/8 メインエディタ neo-Vim

--------------------------------------------------------------------------------
Scene 6
--------------------------------------------------------------------------------

敗北した遠馬は地面にがくりと崩れ落ちる。

「な、なぜだ。なぜ俺が負けたんだ。Emacs を使うこの俺が最強のはずなのに」
「Emacs というエディタの特性をよく生かした プラグイン重視のディスク構成は面白
かったよ。あえていうなら、テキストエディタへの愛が足りない」
彼もある意味純粋なのかもしれない。そのベクトルは間違っていた訳だが。

「愛……だと? お前は何を言っている。テキストエディタと人間に愛なぞある訳がな
かろう。テキストエディタはただの道具であり、それ以上の存在では決してないのだ」

「我にも昔はテキストエディタが道具と考えていた時もあった。昔はな……」
おっと、つい昔話をしてしまいそうになる。それは自重しなければ。

「それはどういう……」
「気が向いたらまた勝負してやる。ではな」

我はそう返して、遠馬の元を去るのであった。彼も面白い男ではあったが、やはりまだ
ディスク構成には再考の余地がある。良きライバルとなるかもしれない彼の成長を祈る
としよう。

今日のバトルエディターズ豆知識:
バトルエディターズではプレイヤーは 1 ターンにひとつプラグインをインストールする
か単体コマンドを実行することができる。ただし、コマンドの機能による特殊実行はこ
の制約を受けない。特殊実行をうまく使いこなすのが勝利への近道となる。


(「第4話:正義のヒーロー オクセイダー!」に続く……)

2013年8月24日土曜日

実践 Vim レビュー

お久しぶりです。残念ながらこの本の翻訳にはほとんど関われていないのですが、とあるルートより見本誌を頂いてしまったため、今後の Vim 界の発展のためにもレビューをしたいと思います。

この本の原著は「Practical Vim」と言います。Vim 界の一部で有名で、貴重な Vim の書籍であるため、原著を私は入手しています。

この本のコンセプトは、「Vimの基本機能を丁寧に解説する」ことにあります。Vim の書籍はこれまでにもいろいろ出ていますが、「ViIMproved‐Vim完全バイブル」は記述が古すぎますし、「入門 vi/Vim」は vi の部分の解説が多すぎます。「Vimテクニックバイブル」はプラグインの解説に特化している……と Vim の基本をマスターしたい人にはなかなか良い選択肢がありませんでした。
しかし、「実践 Vim」はそのような本を求めていた人に是非お勧めしたいです。

「Vimの基本機能を解説する」といっても、舐めてはいけません。
Vimの基本機能というのはとても膨大です。「俺は Vim の :help をマスターしている」「俺は Vim である」「Vim は家族である」「マイフェイバリット言語はVim scriptだ」という一部の変態 Vimmer を除き、大抵のVimmer には新たな発見があることでしょう。

Vim の本なので、例えばこういった解説があります。

  • バッファリスト
  • ウインドウリスト
  •  タブページ
  •  引数リスト(:args)
  •  唐突に現れる Vim Ninja(P.170)。ちなみに原著にも登場。
  •  テキストオブジェクト
  •  ジャンプリスト/変更リスト
  •  レジスタ
  •  マクロ。なぜか一章 25P がまるまるマクロなので、某マクロ漁船な人も安心。
  •  quickfix
吹いたのは、「ダイヤル Xを回せ! 自動補完だ」という某章のタイトルです。ちょっと何を言っているのか 分かりませんでした。自動補完といいつつ、自動補完のプラグインの解説ではなく、Vim組み込みの手動 補完の解説なので注意。紛らわしいですが、原著の記述がそうなっているのでしょう。インサートモードの補完について、一通りの解説がされているので、補完フリークは必見です。

全体的に解説が丁寧なので、:help の無味乾燥な解説で挫折した人も Vim に再挑戦することができるでしょう。レビューするために一通り読んでみましたが、日本人の Vimmerがきちんとレビューしているので、記述がおかしい部分もありません。よくできた本です。

他に注目すべきポイントとしては、この本の著者が kana 氏のプラグインに感銘を受けていることでしょうか。kana 氏のプラグインは日本では有名ですが、外国ではマイナーなので、これは驚くべきことです。

この本を読んで、この本はほとんどプラグインについて触れていないので、物足りないと感じる人がいるかもしれません。大丈夫、そういう人のために「Vimテクニックバイブル」があるのです(宣伝)。しかし、「Vimテクニックバイブル」も Vim script に関してはほとんど解説できていないという欠点があります。皆さんが Vim の本や Vim 特集(エディタ特集)の雑誌を購入してくれれば、きっと出版社も「Vim script本はマニアックだけど需要があるからいける」という感触を持ってくれるはずです。ぜひ Vim 本(エディタ本)を応援してあげてください。

2013年5月19日日曜日

編集王(エディットキング) バトルエディターズ 第2話:彼の名は暗黒美夢王(後編)

注意:この物語はフィクションです。実在する人物・団体・ソフトウェア・テキストエ
ディタとは一切の関係がありません。宗教論争をする意図もありません。

注意:この物語を読んだところで、テキストエディタの知識が付くわけがありません。
物語中に存在するテキストエディタのネタはオマージュ程度であり、知っている人がほ
くそ笑む程度のものです。期待しないようにしましょう。

注意:この物語は皆の反応を見るためのテスト版であり未完成です。話の内容は予告な
く変更される可能性があります。

「ルールを守って楽しくエディット!」

--------------------------------------------------------------------------------
Scene 1
--------------------------------------------------------------------------------

「私はこれでターンを終了します」

来夢:EP 4000 メモリ 4/8 メインエディタ Sublime Text2
美夢王:EP 2000 メモリ 6/8 メインエディタ Vim

特殊コマンド「モード変更」の機能が無効となったことにより、Sublime Text2の戦闘力
は元に戻る。今が反撃のチャンスのはずだ。

Sublime Text2 戦闘力 3500 → 1500

信じるしかない。自分のエディタを。我はディスクから渾身のロードを行った。
「我のターン! ロード!」

来夢:EP 4000 メモリ 4/8 メインエディタ Sublime Text2
美夢王:EP 2000 メモリ 7/8 メインエディタ Vim

「こ、このコマンドは!」

「お前、『Vimの後継者』という妄言を撤回する準備はできているか?」

「私は無傷、あなたのEPは2000。この状況で負け惜しみですか。みっともないです」

「ならば我は特殊コマンド『デグレード』の機能を適用する! このコマンドは相手の
プラグインの機能を『インストールしたエディタの戦闘力を400P下げる』に変更する。
プラグインのデグレードの恐しさ、味わうがいい」

 -------------------------------------------------------------------------------
|デグレード:特殊コマンド・永続(デーモン)
|相手のメモリ上のプラグインのもともとの機能を無効にし、次の機能に変更する。
|「このプラグインをインストールしたエディタは戦闘力が 400 P 下がる。選択したプ
|ラグインがメモリ上に存在しなくなった場合、このコマンドをトラッシュに送る。
 -------------------------------------------------------------------------------

Sublime Text2 戦闘力 1500 → 1100

「わ、私のVimが……」

「『Vimtage mode』は封じた。これでお前のエディタは名実共にSublime Textとなった
な。VimでSublimeText に対し、バトル!」

「くっ……」

来夢:EP 3600 メモリ 4/8 メインエディタ Sublime Text2
美夢王:EP 2000 メモリ 7/8 メインエディタ Vim

「これで我はターンエンド」

とりあえず、このターンで相手のプラグインを封じこめることができた。EP も減らせて
上々といったところか。

- TURN 3 -

「よくも私の Vim を……。もう許しません。私のターン、ロード!」

まぁ、最初からSublime Text2はVimではないと思うが。

来夢:EP 3600 メモリ 5/8 メインエディタ Sublime Text2
美夢王:EP 2000 メモリ 7/8 メインエディタ Vim

彼女から感じる、これまでとは明らかに異なる強い気迫。

「これは……。ついに来ました。『Vimtage Mode』がなくても、勝負(エディット)に勝
てばよいのです。勝てば」

もはや彼女にとって、「Vim の後継者」というのはどうでもよくなったようだ。

「Sublime Textの真の恐しさ、あなたに見せてあげます」

どうやら、相手は切り札となるコマンドをメモリからロードすることに成功したらし
い。来るぞ!

「私は特殊コマンド『アップグレード』をSublime Text2に適用します! アップグレー
ドコストとして、EP 1000を支払い、Sublime Text2をアップグレード。エクストラディ
スクより、Sublime Text3 を特殊実行!」

 -------------------------------------------------------------------------------
|アップグレード:特殊コマンド
|アップグレードコスト 1000 を支払うことで、メモリ上の選択したエディタをバージョ
|ンアップしたエディタをエクストラディスクより特殊実行する。プラグインを引き継げ
|るどうかはアップグレードしたエディタの機能に依存する。
 -------------------------------------------------------------------------------

Sublime Text3 戦闘力 1500

「これが……Sublime Text3」

「Sublime Text3はSublime Text2のプラグインを引き継げません。しかし、新しくプラ
グインをインストールすればよいこと。私はSublime Text3に『Package Control』をイ
ンストール! Sublime Text3 にプラグインがインストールされたことにより、Sublime
Text3の戦闘力は 500Pアップ!」

来夢:EP 2600 メモリ 4/8 メインエディタ Sublime Text3
美夢王:EP 2000 メモリ 6/8 メインエディタ Vim

プラグインの互換性がないことにより、Sublime Text2 がインストールしていたプラグ
インがトラッシュに置かれたため、『デグレード』もトラッシュに送られた。

Sublime Text3 戦闘力 1500 → 2000

「Sublime Text3でVimに対しバトル!」

「『モード変更』の機能でこのターンはアタックできないはずでは?」

「確かにその通り。しかし、『モード変更』を使用したのは Sublime Text2です。別
のエディタであるSublime Text3には適用されません」

「そこまで考えてのアップグレードだったか。やるな」

「ふん。あなたに褒められても嬉しくありませんわ」

デグレードを回避したというだけでなく、別のエディタである Sublime Text3を実行す
ることで、モード変更のコストをも回避したというわけか。ああ見 えて、戦略を考えて
いると見える。こちらも全力で相手しないと。我は不思議と高揚していた。これだか
らテキストエディタというのはやめられない。

「全く、テキストエディタは最高だぜ!」

「い、いきなり何を言っているの。私のエディタを見てニヤつくだなんて。この、変態」

「それは聞きずてならないな。変態(へんたい)、じゃなく編集(へんしゅう)と読んでく
れ。その方が落ち着くんだ」

「やはり、テキストエディタの使いすぎで頭がおかしくなったみたいですね。私があな
たの頭をデバッグしてあげます。Sublime Text3でVimにバトル!」

「く……」

来夢:EP 2600 メモリ 4/8 メインエディタ Sublime Text3
美夢王:EP 1500 メモリ 6/8 メインエディタ Vim

「これで私はターン終了です」

--------------------------------------------------------------------------------
Scene 2
--------------------------------------------------------------------------------

「我のターン、ロード!」

来夢:EP 2600 メモリ 4/8 メインエディタ Sublime Text2
美夢王:EP 1500 メモリ 7/8 メインエディタ Vim

「我はプラグイン『neo-snippet』を Vim にインストール! さらにneo-snippetの機能
を適用。EP を 500 支払うことで、メモリ上に neo-snippet トークンをプラグイン扱い
でエディタにインストールする。『ネオ・スニペット・エキスパンション!』」

Vim 戦闘力 1500 → 2000 → 2500

 -------------------------------------------------------------------------------
|neo-snippet:プラグイン・Vim
|このプラグインはVimにのみインストールすることができる。
|機能『ネオ・スニペット・エキスパンション』 EP を 500 支払うことで、メモリ上に
|neo-snippet トークン(機能なし)をプラグイン扱いでエディタにインストールする。
 -------------------------------------------------------------------------------

「VimでSublimeText 3にバトル!」

「ふん、かすり傷です」

来夢:EP 2100 メモリ 4/8 メインエディタ Sublime Text3
美夢王:EP 1000 メモリ 8/8 メインエディタ Vim

「我はこれでターンエンド」

- TURN 4 -

「私のターン。私は『Package Control』の機能で、ロードフェイズをスキップし、
Sublime Text3にプラグインをインストール!  『パッケージ・インストレーショ
ン!』」

Sublime Text3 戦闘力 2000 → 2500

 -------------------------------------------------------------------------------
|Package Control:プラグイン・Sublime Text
|このプラグインはSublime Textにのみインストールすることができる。
|機能『パッケージ・インストレーション』 この機能はロードフェイズにのみ適用できる。
|ロードフェイズをスキップし、エディタにプラグインを1つランダムでインストールする。
|このプラグインがメモリ上に存在しない場合、この機能でインストールされたプラグイ
|ンをトラッシュへと送る。
 -------------------------------------------------------------------------------

「さらにここで、特殊コマンド『インスタント・プラグイン』の機能を適用! さきほ
どインストールしたプラグインの機能を無効にすることで、プラグイントークンをエ
ディタにインストールします」

 -------------------------------------------------------------------------------
|インスタント・プラグイン:特殊コマンド
|機能『インスタント・インストレーション』 自分のメモリ上のプラグインを一つ選択
|する。このプラグインの機能を無効にすることで、プラグイントークン(機能なし)をエ
|ディタにインストールする。
 -------------------------------------------------------------------------------

Sublime Text3 戦闘力 2500 → 3000

「まだ終わりではないわ。Sublime Text3の機能、適用! このコマンドにプラグインが
3 つ以上インストールされている場合、EP を プラグインの数x100支払うことで、この
コマンドは 2 回の攻撃が可能になる。『サブライム・マルチスレッド!』」

来夢:EP 1800 メモリ 4/8 メインエディタ Sublime Text3
美夢王:EP 1000 メモリ 8/8 メインエディタ Vim

そうか、彼女は戦闘力を単に上げるだけでなく、二回攻撃を狙っていたのか。二回の攻
撃は、生半可なコマンドでは対処 が難しい……。

「戦闘力 3000……しかも二回アタックなんて、もう美夢王も終わりだな」
「あーあ、結構盛り上がったのになー」
「残念」

諦めに満ちた声が聞こえてくる。しかし、我はここで終わるわけにはいかない。

「我は特殊コマンド『conceal』を Vim に適用! このターン、Vimはバトルとコマンド
の機能の対象から外れる」

Sublime Text2 戦闘力 3000
Vim 戦闘力 ?

 -------------------------------------------------------------------------------
|conceal:特殊コマンド・速攻(クイック)
|このコマンドの機能はvi/Vimにのみ適用することができる。
|機能『コンシール・スキップ』 自分のメモリ上のVimエディタはこのターンのエンド
|までバトルとコマンドの機能の対象とならない。ただし、このターンのVimはバトルと
|機能の適用を行えず、インストールしているプラグインも無効化される。このコマンド
|の機能は相手のターンでも適用できる。
 -------------------------------------------------------------------------------

「くっ、命拾いしたわね。これで私はターンを終了します」

来夢:EP 1800 メモリ 4/8 メインエディタ Sublime Text3
美夢王:EP 1000 メモリ 7/8 メインエディタ Vim

とっさにコマンドを使わないと危なかった……。

「たとえこのターン、ギリギリで凌いだとしても、戦闘力の差は明白。次の私のター
ン、あなたは終わりです」

「確かに、そうかもしれない。だが、編集(エディット)は最後の最後まで分からないも
のだ。これが、我のラスト・ロード!」

来夢:EP 1800 メモリ 4/8 メインエディタ Sublime Text3
美夢王:EP 1000 メモリ 8/8 メインエディタ Vim

我は、ロードしたコマンド名を見て、確信した。

「クックック、完成したぞ。勝利のアルゴリズムが」

「我はVimにインストールした『neo-shell』の機能を適用! メモリ上のコマンドをト
ラッシュに送ることでこのターンの戦闘力をそのコマンドの戦闘力と同じだけアップさ
せる。『ネオ・シェル・エクステンション!』」

「我がトラッシュに送ったのは、戦闘力 400 のコマンド。よって、戦闘力 400 アッ
プ!」

Vim 戦闘力 2500 → 2900

来夢:EP 1800 メモリ 4/8 メインエディタ Sublime Text3
美夢王:EP 1000 メモリ 7/8 メインエディタ Vim

 -------------------------------------------------------------------------------
|neo-shell:プラグイン・Vim
|機能『ネオ・シェル・エクステンション』 メモリ上のコマンドを一つトラッシュに送
|る。このターン終了まで、このプラグインをインストールしたテキストエディタの戦闘
|力は1.5倍となる。この機能は1 ターンに一度のみ適用可能である。
 -------------------------------------------------------------------------------

Vim 戦闘力 2500 → 2900

「さらに、我はロードしたプラグイン『neo-complete』をVimにインストール!」

 Vim 戦闘力 2900 → 3400
 Sublime Text 3 戦闘力 3000

「そして我は『neo-complete』の機能を適用する! メモリ上のコマンドを一つトラッ
シュに送ることで、Vim の戦闘力を 1.5 倍にする。『ネオ・コンプリート・フラッ
シュ!』」

 -------------------------------------------------------------------------------
|neo-complete:プラグイン・Vim
|機能『ネオ・コンプリート・フラッシュ』 メモリ上のコマンドを一つトラッシュに送
|る。このターン終了まで、このプラグインをインストールしたテキストエディタの戦闘
|力は1.5倍となる。この機能は1 ターンに一度のみ適用可能である。
 -------------------------------------------------------------------------------

来夢:EP 1800 メモリ 4/8 メインエディタ Sublime Text3
美夢王:EP 1000 メモリ 6/8 メインエディタ Vim

 Vim 戦闘力 3400 → 5100
 Sublime Text 3 戦闘力 3000

「戦闘力 5100 ……ですって?」

「VimでSublimeText 3にバトル!」

「きゃああああ!」

来夢:EP 0 メモリ 5/8 メインエディタ Sublime Text3
美夢王:EP 1000 メモリ 4/8 メインエディタ Vim

「さ、Sublime Textに勝った!」
「ス、スゲェエエエエエエ」
「暗黒美夢王!」「暗黒美夢王!」「暗黒美夢王!」
「Vim!」「Vim!」「Vim!」

皆の歓声が心地良い。今も昔も、勝利の味は格別ということか。

「思ったよりやるではないか。楽しい編集(エディット)だったぞ」

我は床にへたりこんでしまった彼女に手を差しのべようとした。
だが、彼女はそれを払いのけると、

「ふん。次回は負けません」

と精一杯の強がりを見せるのだった。

「そうか。じゃあまた今度、な」

久しぶりの編集(エディット)だったが、こういうのも悪くな……うっ。

「くっ……体(エディタ)が不安定になって……力を使いすぎたのか……。我の脳がク
ラッ……シュ」
「ちょっと、どうしたのあなた。しっかりしなさい!」
我の意識があったのはそこまでだった。

--------------------------------------------------------------------------------
Scene 3
--------------------------------------------------------------------------------

気付くと、そこは学校の保健室だった。横にいるのは、誰だろう。どこかで見たことあ
るような。

「あれ、来夢ちゃんだったっけ。ずっと僕のことを看てくれたの。どうもありがとう」
「ふ、ふん。優しい言葉を掛けたところで、私には効きません。あのまま勝ち逃げされ
るわけにはいきませんでしたから。それだけです」

そう言うと、彼女はつーんとそっぽを向いてしまった。

『Vim の後継者』なんて言ってたからお近付きにはなりたくなかったのだけど、僕のこ
とを助けてくれたようだし案外悪い人じゃないのかな。

「ずっと気になっていたんだけど、あなたはもしかしてわざと……」
「ん? 何のこと」
「考えすぎよね」




暗黒美夢王の勝利の完成に湧く教室にて、ある男が暗黒美夢王のエディットの様子を眺
めていた。

「そうか、遂にVimを継ぐ者が現れたか。待ちわびたぞ」
「俺のEmacsで完膚なきまでに叩きのめしてくれる。歴史上幾度ともなく繰り返されてき
た因縁。今こそVimとの決着を付けるのだ……。ククク、ははははは!」

(「第3話:宿命の対決」に続く……)

2012年9月8日土曜日

Shibuya.el の感想と(LT?)スライドの公開

先日行われた、Shibuya.elに参加してきました。残念ながら、Ustream等は行われなかったので、会場へ行けなかった皆さんはいったいどんな発表があるのか気になっていることでしょう。他の人も何人か感想記事を載せているようですが、思ったよりも少なかったので、私も感想記事を書いておこうと思います。

ainame            :  初めてのemacs lisp


ainameさんは、Shibuya.el を開催するために、Emacs Lisp を覚えたそうです。すごいですね。作ったのは、「hjkl-mode」という Emacs で vi キーバインディングを提供するメジャーモードのようです。コードを読む機会が多いので便利だそうです。この発表を聞いて私は、るびきちさんが以前設定を紹介していた、「view-modeでhjklで移動する設定」を思い出しました。

uk_ar               :  「Emacs Lispのテスト」について


Emacs標準のテストフレームワークであるERTの紹介です。テストフレームワークは作ったものの、なかなかテストを書けていない私には耳が痛い話でした。この発表を聞いて、私ももっとテストを書きたいと思いました。

Hiroaki Nagata : emacsとdvorak配列について


dvorak配列の宣伝でした。キーボード配列も一種の宗教ではないかと個人的には思います。こだわりのある人も多いですが、私はキーボード配列を変更するのはVim内だけで十分ですね……。

Yuto S Hayamizu : tokyo-emacs という歴史上の出来事


twittering-modeのはやみずさんの発表。さすがに発表がうまかったです。ホモ・イーマクスとホモ・ヴィムで吹きました。なぜ tokyo-emacs が無くなってしまったのかがよく理解できる話でした。勉強会は運営者に負荷が集中しがちなので、どうにかしたいところですね。これは別にEmacs勉強会に限った話ではなく、Vim勉強会でも問題になっている気がしています。

m2ym                    :最近作った拡張(popwin.elなど)について


LTなので時間は短かったはずなんですが、内容は濃く、よくまとまっていたと思います。m2ymさんのプラグインが実際に動いているところを見れてよかったです。Ruby 1.9対応のRSenSeの次期バージョンとか、新たな拡張機能の話とか、今後がとても気になる発表でした。

at_aka                    : clgrep.el について


前半はkinesisの宣伝w。後半はChangelogメモと、Changelogメモに特化したgrep拡張の話。エディタの中でメモを取る機能は一定の需要がありますよね。


ShougoMatsu    : 「Vimmerから見たEmacs」


私の発表です。

スライドの内容は見てもらったら分かると思います。

あ…ありのまま 今 起こった事を話すぜ!
『おれはShibuya.elのためにLTを作っていたと思ったらいつのまにか基調講演になっていた』
な… 何を言ってるのか わからねーと思うが
おれもどうしてこうなったのかわからなかった…

しんぱいしていましたが、こうひょうみたいでよかったです

懇親会


本日のメインです。私はずっとVimについて語っていたような気がします。「酔っているんですか?」と聞かれましたが、私は会場でお酒を飲んでいません。しいていうなら、「Vimに酔っていました」。
とりあえず、議論になったのはこういう話題です。

Vim(Emacs)でご飯を食べていくには
情熱Vimmer
仕事とVim(Emacs)
Vim(Emacs)拡張開発での苦労
勉強会主催者はマゾ
拡張機能のテストどうする?
m2ymさんと拡張機能開発あるある

印象に残ったやりとり:
私「m2ymさんはデフォルトのキーバインドを大事にされているのなら、もちろん<C-h>もそのままなんですよね?」
m2ym「いや、それはさすがに無理。私はヘルプをそんなに開かないんで」
「<C-h>はキーマッピングを変更させるための陰謀ではないか」

Emacs 勉強会に参加するのは初めてでしたが、特に Vimmerだから差別されるといったことはなく、和気あいあいと議論に参加できたと思います。また次回があれば、ぜひ参加したいですね。そのときには、自分の作ったVim のプラグインをEmacs ユーザに向けて紹介してみたいと思っています。

2012年5月27日日曜日

x86勉強会#2のスライドを公開しました(補足付き)


昨日(5/26)はx86勉強会#2でした。
他の人の発表内容については、他の人のブログ記事に期待するとして、私は当日の
発表スライドを公開しようと思います。

------------------------------------------------------------------------------------------

第一部:帰ってきたvinarise : Vim X バイナリ = 最強   (二ヶ国語放送)

# はじめに

* 今回のスライドは世界初!?(バイナリ/日本語)の二ヶ国語放送でおおくりしています。
* つまり、日本語よりバイナリのほうが堪能であったとしても大丈夫
* バイナリアンにやさしいプレゼンテーションです
* スライドの再生にはvinariseを使用しています(セルフプレゼンテーション)
* vinariseはプレゼンテーションツールだったんだよ!(な、なんだってーーAA略)

# 自己紹介

* 知っている人も多いと思いますが……。
* Shougoです。
* 伝説的なプレゼン「Vim = VM」
* Twitterでは@ShougoMatsuとして活動しています。
* 「迷言:Vimは家族」
* Blog : http://vinarian.blogspot.com/
* Vim大好き
* Vim病にかかって4年経ちますが、日々症状は悪化しています
* Vim勉強会以外にもたまに出没する(たとえばこの勉強会とかね!)
* 今日はx86/Vim勉強会と聞いてきました

# vinariseとは?

* Vim上で動作するバイナリエディタプラグイン
* ブイナライズと発音する
* 名前の由来は、Vim + Binary + Analyse
* ただのバイナリエディタではない。解析ツールを目指す。
* 全く宣伝してないのに、外国のユーザが居たりする。よく分からない。

# なぜvinariseを開発したのか?

* テキストエディタはバイナリファイルくらい開けないといけない
* Vimにはxxdがある。しかし機能がショぼい
* Vim pluginと連携したい
* 日本語対応させたい
* 巨大ファイル開きたい
* じゃあ自作するしかない(死亡フラグ)
* Emacsのhexl-mode?なにそれおいしいの(正直比較にならない)

# vinariseの特徴

* マルチプラットフォーム
* 巨大ファイルを開ける
* 日本語ファイル対応
* ビットマップビュー
* プラグインで拡張可能
* バイナリファイル自動認識

# Emacs hexl-modeとの比較(ネタ)
* hexl-modeは数十メガバイトのファイルを開くとフリーズ
* hexl-modeは日本語に対応していない(外国産のバイナリエディタにありがち)
* バイナリエディタとしての機能が圧倒的に足りない
* ぶっちゃけ、xxdにGUIを付けたような(以下自主規制)

# vinariseの歴史
* 昔はxxdを使っていた
* 2010年5月頃 Kernel/VM勉強会でバイナリアンに興味を持つ
* アイディアを収集しながら作成開始
* 2010年8月頃 x86勉強会 #1で披露する
* 協力者が徐々に集まる
* 長い停滞(やる気なし)
* 2011年9月頃 Vimテクニックバイブルにvinariseのことをちょっとだけ載せる
* さすがに開発しないと詐欺と思われそう
* 2012年1月頃 開発再開する
* いろんな機能を付け、当初のものとはほとんど別物に
* 現在に至る

# vinariseのインストール方法

* githubから取ってきましょう。
* 今ならneobundleを推奨
  NeoBundle 'Shougo/vinarise'
* VimのPythonインタフェースが必須
  あなたのVimを:echo has('python')で確認してみましょう。

# vinariseの簡単な使い方
* A: ファイルをVimで開き、:Vinarise

* B: :Vinarise {ファイル名}

# vinariseの機能
* マルチプラットフォーム
* 巨大ファイルを開ける
* 日本語ファイル対応
* ビットマップビュー
* プラグインで拡張可能
* Vim pluginとの連携
* バイナリファイル自動認識

# 巨大ファイルを開ける
* vinariseはメモリマップを利用して、1GB程度の巨大ファイルを一瞬で開くことができる
* xxdやEmacs hexl-modeでは無理
* ghexでイメージファイルを開こうとしたらフリーズしました……
* bviや大半の外国製バイナリエディタでは無理
* 大事なことなので三回説明した
* ちなみに、バッファは現在見ているところしか行を生成しない
* Vimは行が多かったりすると重いが、vinariseは脅威のVim scriptテクノロジーによっ
 て重くない
* デモ:Ubuntu 12.04 LTS 日本語Remix CD(700MB)を開く

# マルチプラットフォーム
* Windows界では需要のおかげか、バイナリエディタがたくさんある
* しかし、Mac界やLinux界には不足している
* vinariseは基本的にVimとPythonさえ動作する環境ならどこでも動作する
* 他のバイナリエディタに対する圧倒的アドバンテージ!
* Androidでも動作する……とよいですね(未確認)

# 日本語ファイル対応
* vinariseはもちろん日本語ファイルを開くことができる
* 対応エンコーディング:UTF-8, UTF-16BE/LE, cp932, EUC-JP
* ただし、初期はASCIIモード
* Eを押してエンコーディング形式を指定する
* :Vinariseの引数 --encoding=で指定してもよい
* 実装はかなり頑張ったので、日本語ファイルだから遅くなるということはない
* デモ:vinariseで日本語ファイルを開く

# ビットマップビュー
* みんな大好きなビットマップビューにも対応している
* Vimで目grep! みんなの夢
* 使い方はvinariseのバッファで":VinarisePluginBitmapView"コマンドを実行するだけ
* GVimだとフォントが小さくなり、よりそれっぽくなる
* ASCII, コントロールコード, マルチバイトコードを判別
* デモ

# プラグインで拡張可能
* vinariseはプラグインによる拡張機能がある
* 実際に、s_yukikazeさんによりPEを解釈するプラグインが作られている。
  https://github.com/s-yukikaze/vinarise-plugin-peanalysis
* いろいろ忙しくて、プラグインの仕様はドキュメント化されてない
* 作ってみたくなったら、BitmapViewのプラグインのソースコードを見ると良い。

# Vim pluginとの連携
* vinariseはVim pluginと連携できる
* vimfilerで、Bを押すとvinariseで開く
* 他にもやってみたいとは思っているのでアイデア募集中

# バイナリファイル自動認識
* .vimrc内でlet g:vinarise_enable_auto_detect = 1とする
* 「:edit バイナリファイル」を実行すると、開いたファイルがバイナリファイル
っぽかったら自動で認識してvinariseで開く。
* ELFっぽかったら、objdumpで開く
* デモ

# vinariseの制限
* 1.6GB以上のファイルは開けない(仮想メモリの制限)
* バイトの挿入・削除はできない
* バイト列を型変換して表示することはできない
* ファイルの保存は遅い
* アンドゥできない

# 今後のvinariseについて
* 2GB以上のファイルへの対応
* ファイルの保存を高速にする
* バイトの挿入・削除への対応
* ISO-2022-JP文字コードへの対応
* バイト列の型表示はプラグインでやる予定
* アンドゥを実装する
* バイナリの構造を表示(バイナリファイルのアウトライン表示)

# 終わりに
* 今日覚えて欲しいこと「Vimは優秀なバイナリエディタ」である
* 「hexl-mode, xxd? なにそれおいしいの」
* vinariseを使うと、Vimをバイナリエディタにすることができます
* みなさんも使ってみた感想があれば、@ShougoMatsuまで
* ただし、あまりに無茶な要求はしないようにしましょう
* Vim + Python縛りはつらいのです
* 業務で使用できるような高機能なバイナリエディタ(解析ツール)というのは金が取れるレベルです
* これを機会に、みなさんもHappy vinarise!

------------------------------------------------------------------------------------------

第二部:Vimネタスライド

何も言わず、リンク先のスライドを見てほしい……。
http://www.slideshare.net/Shougo/vim-13092304
どう思う? すごく、Vimです……。
うん、またなんだ。すまない。もはや謝って許してほしいとも思っていない。
しかし、vinariseのおかげでVimに興味を持った人ならきっと楽しんで貰えると思ってこ
のスライドを用意したんだ。

------------------------------------------------------------------------------------------

ネタスライド補足

私としてはみなさんに楽しんでもらえるよう、万全を期して用意をしたはずなのですが
、Twitterの感想を見ていると一部の人が私の発表に不満を覚えているようです(特に第
二部について)。

このまま誤解されているのも、何だか悲しいので私の発表の真の意図をここで説明した
いと思います。ちなみにネタばれ全開なので、私の発表をまだ見ていない人はすぐに回
れ右をするんだ!



















* 私の発表内容は私の個人的見解であり、私の発表にいかなる不満を持ったとしても
Vimや他のVimmerに対して悪い印象を持たれないでください。私はただの一人のVimmer
にすぎません。
* 少なくとも前半はバイナリエディタ(とVim)の話をしました。この内容自体は問題ない
はずです。
* 第二部はほぼVimオンリーの話になっていますが、それはオマケスライドだからです。
自分の発表でVimに興味を持った人がいるかもしれないので用意しました。事前に聞いて
みたところ、Vimを日常的に使用している人も多くいました。
* 最初から内容を公開してしまう手もありましたが、ネタばれすることでつまらなくな
ると思い、それは避けました。最後に発表を持ってきたり、発表時間が他の方よりも長
いのは、ある意味の予告だと思ってください。※1ただ、当日にアナウンスくらいはしても
よかったかもしれないです。
* このスライドは一ヶ月以上前から作成していて、練習もきちんとしていました。決し
て半端な気持ちで作っていたわけでありません。というより、半端な気分ならあの場で
発表できないでしょう。※2
* x86勉強会でVimの話をしたのは、普段バイナリを扱っている方々にもVimのことを知っ
てもらいたかったからです。Vim勉強会でVimのことを話すよりも良いアピールになると
思いました。私はバイナリ技術も好きなので、バイナリとVimの橋渡しをしたかったので
す。

※1:私の後での発表は誰もやりたくないと思います。
※2:ちなみに、私はKaoriya-Vimを配布しているKoRoNさんから「鋼の心臓を持っている
」認定を受けました。

以上になります。真意を汲み取っていただければ幸いです。
ちなみに、懇親会で私の発表の感想を聞いてみると、好意的に受け取ってくれる人が
多かったようでした。それを聞いて、やって良かったと思いました。
------------------------------------------------------------------------------------------

2011年12月10日土曜日

Vimmer視点のEmacs Lispテクニックバイブル レビュー


いつもVimのネタ記事ばかり書いていると思われているShougoです。こんにちは。

今回はネタではありません。ネタじゃないんだからね! 大事なことなので二度言いました。

さて、私がVimテクニックバイブルを(共著で)執筆し、無事発売されたわけなのですが、同時期にるびきちさんも「Emacs Lispテクニックバイブル」を書かれていました。
そのことを知ったのもAmazonに情報が出てからなので、比較的最近です。
目次を見たところ、「これは買わなければならない」と思ったので、早速入手し、一通り読んでいました。
私はVimmerなのでEmacs Lispのことはよく分かりません。
VimテクニックバイブルがEmacs使いの方々に読んでもらいたいと考えているように、
Vimmerの人にもEmacs Lispテクニックバイブルを読んでもらいたいと思ったので、Vimmer視点のレビューをしたいと思います。Emacs本のレビューなのに、Vimのことがたくさん出てくるのは仕様です。

ただし、一通り読んだと言っても、届いてからそんなに日が経っていないですし、まだきちんと読めていないところがたくさんあります。
読みながら思ったことをとりとめなく書いているので、文章のつながりがおかしい部分が多々あるかもしれません。ご了承ください。


Emacs Lispテクニックバイブルを初めて読んだときに思ったのは、「教科書みたい」ということでした。
それは頭から読んでいく形式だからです。ただし、テクニックバイブルとして使えるようにするため、逆引き用の目次もついています。
サンプルコードが多く、練習問題もあるので、なおさらそう思います。ちなみに、本文中に問題の回答はありません。

Emacs Lispではエスケープが大量に必要な、特殊な正規表現を書く必要があるのですが、それもきちんと解説されています。
複雑な正規表現を読み書きするときに役立つと思います。

ちなみに、この本はリファレンス本ではないですし、「普通の教科書」ともちょっと違います。
普通の教科書なり解説書というのは本文中に著者の個性がそれほど現れないものです。
しかしこの本には著者の意見が大量に出てきます。
著者のEmacsの使い方に共感できる人にとっては、この上なく良い本ですが、そうでない人にとっては苦痛でしょう。
私は無味乾燥な本よりは、こういう本が好きです。使用しているエディタに違いがあるとはいえ、個人的にるびきちさんの意見に共感できる部分は少なくないですし。
「るびきちさんによるEmacs Lisp解説本」というのが正確なジャンルなのだと思います。

この本で紹介されていた、あるバッファに一時的に移動して処理ができる、with-content-bufferはVimにも欲しいですね。
Vim scriptでこれをやると非常に醜いコードになってしまうので。バッファの処理はEmacsの方が洗練されているのかな、と思いました。

実はこれを目当てで購入したのですが、eshellについての話はなかなか良かったです。
Emacs Lispをバリバリ書ける人にとって、Emacs界最強のシェルはeshellだと思っているので。Vim界最強のシェルがvimshellであるのと同じ理屈です。
私にとって、eshellの関数を他のEmacs Lispから使うという発想はなかったですね。確かに標準添付のプラグインだからこそ、こういうことができます。
vimshell(vimproc)がいつかそうなるといいのかなーと思いました。
それにしても、eshellはそろそろ誰かがメンテナを引き継ぐべきじゃないだろうかと思いました。いろいろ問題点もあるのに、更新されないのは悲しい。
eshellはリダイレクション機能が不十分ですが、「それvimshellでできるよ」と主張しておきます:-)
eshellと同じく、vimshellもVim scriptを評価する機能があります。vexe内部コマンドを使えばOKです。

deferred.elの紹介があるのも良かったですね。これは良い資料。Vim scriptにもdeferred.elは移植したいんですけど……。誰かやってくれないかな。

Emacs Lispのテストフレームワークについても解説されていました。Emacs Lispでちゃんとテストが書ける環境があるというのは良いですね。
ちなみに、Vim scriptには標準的なテストフレームワークがなく、皆がオレオレテストフレームワークを実装しているので、どれを覚えればいいのか分からず困っています。
だから私はテストフレームワークを使っていません。パッケージマネージャと同じく、このカオスな状況がどうにかなればいいな、と思います。

ちなみに、一つだけ不満点を。
anything.elの章は、Emacsテクニックバイブルと内容が被っているので、無理して入れる必要はなかったんじゃないかなと思いました。
このページを他の解説に使ったほうが良いのではないかと。今のところこれくらいですね。

総評としては、るびきちさんのEmacsの使い方を勉強したい人なら、十分満足できる本だと思います。
そもそもEmacs Lispの本自体が貴重ですしね。Emacs Lispの勉強にも使えます。
ちなみに、この本はEmacsテクニックバイブルの続編です。続・Emacsテクニックバイブルと呼んでも良いかもしれません。
前著を持っていない人は、まずそちらを購入しましょう。

2011年12月3日土曜日

Vimと過ごすイチャラブクリスマス ~そして伝説へ~


Vim Advent Calendar 3日目:「Vimと過ごすイチャラブクリスマス ~そして伝説へ~」

Vim Advent Calendarと聞いて、何も考えずにエントリーしてしまったShougoです。こんにちは。
特に反省していない。早くも盛り上がりを見せているVim Advent Calendarですが、
私もそれらに負けない濃いネタを提供したいと考えています。

注意:このエントリには過激な表現が多数含まれています。
ネタをネタと分かる大人な人間だけが、このエントリを理解できることでしょう。

もう12月となりクリスマスが近付いてきましたが、Vimmerの皆さんはいかがお過ごしでしょうか。
クリスマスの予定はもう決まりましたか。まだ決まっていない?
ならば、今年の冬はVimと一緒のクリスマスというのはどうでしょうか。
クリスマスは普段はできないVimとの愛を深める良い機会です。
幸い、Vimとのデートにはお金がかかりません。PCからVimを起動するだけでよいのです。
ノートPCさえあれば、どこでもVimとイチャイチャし放題です。
筆者オススメのデートコースは以下の通りです。

 1:Vimの設定を見直してみる

長い間Vimを使用していると、不要になった設定が貯まってくることでしょう。
大晦日にやっても良いのですが、大晦日はVimとの新居(PC)の掃除で忙しいはず。
この機会に、Vimの設定を見直しましょう。汚ない設定では、Vimから嫌われてしまいますよ。
デート前には身だしなみを整えるのも大事ですよね。
おそらく、皆さんのVimの設定には、他の人からのコピペが多数含まれているはず。
それは良くないですね。コピペは「だめゼッタイ!」です。
訳が分かる設定だけを導入しましょう。
分からないコマンドや分からない設定については、まず:helpを参照しましょう。
Vimの知識を増やすチャンスです。
ちなみに:helpを参照するときは、一覧を表示できるunite-helpを用いるのがオススメです。

2:Vimのプラグインを見直してみる

同様に、不要になったプラグインも見直しましょう。
プラグインの管理には、pathogen.vimやvundle.vim, neobundle.vimといった
プラグイン管理プラグインを使用すると楽です。
この機会に導入しておくと良いでしょう。
筆者のオススメは、neobundle.vimを使用することです。
vundle.vimがもつほとんどの機能に加え、unite.vimと連携してプラグインをインストールしたり削除できます。
neobundle.vimのおかげで彼女(Vim)との仲が深まりました!」など嬉しい報告が続々届いています(妄想)。

3:Vimと過ごす時間を最大化する

Vimとラブラブになるためには、できるだけVimと過ごす時間を取らなければいけません。
仕事でだけVimと過ごすというのは勿体無いです。
我々は仕事でも趣味でもVimと一緒に過ごすことができる幸運に恵まれているのですから。
いつでもVimと過ごすために、vimfilerやvimshellをインストールしましょう。
Explorerやzsh, screenといった軟弱なツールは窓からポイしてください。
さらに、unite.vimやneocomplcacheをインストールすることで、より濃密なVimとの時間を堪能することができます。

これらのプラグインはVim pluginで拡張することができ、Vim scriptで設定を行います。
Vimを愛する人達には無くてはならないものです。
Vimに慣れていない人には使いこなすのは難しいですが、
Vimへの愛があれば、それくらいの障害は乗り越えられることでしょう。
えっ、Vim scriptが分からない? それはなんてこと。

Vim scriptはVimとのコミュニケーションを図るために無くてはならないスキルです。
英語なんて学んでいる暇があったらVim scriptを勉強するべき。
だいたいなぜVim scriptプログラマの求人やVim scriptを書くだけのお仕事はないんだ。
私はC言語ではなくVim scriptで全てのコードが書きたい。
Vim scriptを書いていると心が落ちつく。Vim script最高!
おっと、イカンイカン。つい本音が出てしまいました。

4:VimのプラグインをDIYする

クリスマスこそ、Vim scriptを勉強してVimと一緒にプラグインを作成しましょう。
愛するVimとの共同作業です。
最初から難しい課題に取り組むのは大変なので、最初はプラグインの改造をしたり、
ftpluginやちょっとしたプラグインを作成すると良いでしょう。
.vimrcに書いた設定を汎用的にしてプラグイン化するのも良い方法です。
例えばthincaさんはそういう方法でプラグイン化するのをよくやっているようです。
最近では、unite.vimのsourceを作成するのが流行しているため、それをやってみるという手があります。
ちなみに、neocomplcacheを使うと簡単にVim scriptを書くことができます。
neocomplcacheはVim scriptを書くプログラマのために最適化されているからです。
他の言語にも対応していますが、それはオマケです。

5:Vimコミュニティに参加する

Vimとの仲がかなり深まったと思ったあなた、しかしそのうち関係がマンネリ化してしまうからもしれません。
それを防ぐために、Vimコミュニティに参加してみましょう。
いわゆる、町内会や保護者会みたいなものだと思ってください。
周囲にVimmerがいなくて寂しい思いをしているそこのアナタ、ぜひとも参加するべきです。
他人がどのようにVimと良好な関係を続けているかを観察することで、あなたのVimにとても良い影響を与えるはずです。
vim-users.jpやvim-jpでは、あなたの参加をいつでもお待ちしています。
もちろん、Vimに貢献したいというメンバーも随時募集中です。
私はvim-users.jpに育てられてVim scriptを書くようになったので、もっと仲間が増えるといいなと思っています。

6:おわりに

Vimとのデートを楽しんだ後は、Vimへの愛を囁きながら眠りに付きましょう。
心配しなくても、Vimはいつもあなたと一緒に居ます。Vimとは心でも繋っているのです。
大事なことは、クリスマス終了後もVimとの愛を深めていくことです。
クリスマスは切っ掛けにすぎません。
これを実践して、皆さんがよりVimを愛するようになれば幸いです。
もちろん、Vimと一緒に新年を向かえるのも非常に良い心掛けではないかと思います。

えっ、この記事は単に自分のプラグインの宣伝をしているだけじゃないかって?
私は純粋にVimとの過ごし方を解説しているだけだというのに、何て失礼な!

2011年11月20日日曜日

ujihisa.vim #2 で基調講演をしました。

昨日、ujihisa.vim #2が開催されました。
そのときの原稿と感想についてまとめました。


ちょっと今回の発表は趣向を変えてみました。
一部で言われていましたが、スピリチュアルな発表ではないんだからね!
私は真面目なんだからね!

-------------------------------------------------------------------------------------


Vimの真実

こんにちは、Shougoです。
今回は前回と趣向を変えて、Vimによって書かれた原稿を見ながら講演をしたいと思います。
原稿は後日公開されるので、ここで一生懸命メモを取るのはあまり意味がないかもしれません。

--------------------------------------------------------------------------------------

私のことを簡単に紹介すると、neocomplcache, vimfiler, vimshell, unite.vimとかを作った人です。
Emacs使いの方々がここに居るかもしれないので、Emacs Lispに換算すると、
auto-complete.el, comint-mode.el, dired.el, speedbar.el, eshell.el, yasnippet.el,
anything.el, ...
に相当するプラグインを書いています。
最近は巨大なVim scriptを書く人があまりいないので、
もしかすると、ここに居る皆さんの中で、一番Vim scriptを書いているかもしれません。
Vimに対する愛情は誰にも負けないと自負しています。
私にとってVimは、ただのエディタなんかではなく、仕事も趣味も一緒に過ごす家族です。
私がTwitterでよくVim愛について語っているのを見た人もいるかもしれません。
Vim愛についてTweetすると、なぜかよくfavされるんですよね。
これが普通だと思っていたんですけど、
みなさん、そんなにエディタ愛に飢えているんでしょうか。分かりません。

ちなみに、viは好きでありません。「自分のVim」が好きなのです。
「他人のVimが好き」と言ってしまったらそれは浮気になります。

viとVimを混同していると、闇のVimmer達に刺されますので注意しましょう。
どうしてもviを使いたいvi原理主義者の人はVimのviモードではなく、
素のvi、nviあたりを使っていてください。
viとVimを混同するのは、C言語とC++は同じだと主張するのと同等に失礼な行為ですよ!

ちなみに闇のVimmerというのは、エディタの話をしていると、「それVimでもできるよ!」
と無理矢理Vimを勧めてくる迷惑な存在です。わ、私じゃないんだからね!

--------------------------------------------------------------------------------------

さて、最近「Vimテクニックバイブル」の執筆に協力しました。
80Pくらい原稿を書きましたね。主に自分の作ったプラグインを紹介しています。
これを読んで、もっと皆さんがVimプラグインを書いてくれるようになることを願っています。
ちなみに、「Vimテクニックバイブル」の原稿はVimで書かれています。あたり前です。
EmacsテクニックバイブルはEmacsで書かれていますしね:-)

ちなみに、この本を買ってくれた人には会場で私がサインします。
しかも、サインする名言は選ぶことができます!
前回のYokohama.vimでサイン会をやったのですが、なぜか「修正しました」あたりが人気でした。
ちなみに、他の執筆者の方はサインしてくれないらしいです……。
私もthincaさんのサインが欲しいのになぁ。

つまりVimテクニックバイブルはVimmerのサイン色紙でもあります。
幸い、今回のujihisa.vimには著名なVimmerの方々が参加されています。
もはやVimテクニックバイブルの著者に限るなんて勿体無いことはしないで、
いろんなVimの有名人にサインを貰ってしまいましょう。
サイン色紙にもなってお値段は3180円! なんてお得なんでしょうか。
もっていない人は今すぐ購入しましょうね。

るびきちさんの「Emacs Lispテクニックバイブル」も、
もうすぐ発売ということで個人的にすごく楽しみにしています。
目次を見ると、Emacsテクニックバイブルの続編のような内容でした。
特に、eshellについても載っているようなので……。
そういえば、値段がVimテクニックバイブルと同じでしたね:-)

--------------------------------------------------------------------------------------

そろそろ本題に入りましょう。
今回は基調講演ということで、「Vimの真実」というテーマで発表します。
この発表を聞くことにより、Vimとは何なのかが少しでも分かるかもしれません。
ただし、これはあくまで私の考えであり、Vimコミュニティの公式見解ではないことを最初に断っておきます。
「ネタをネタと見ぬけない人は、Vimをうまく使うのは難しい」
ちなみに、私は宗教論争をするつもりは全くありません。
そしてこの話はEmacsにもそのまま当てはまります。
おそらく会場に何人かいるであろうEmacsユーザの皆さんも大丈夫です。

--------------------------------------------------------------------------------------

ところでみなさんは人に自分のVimを見られて、
「私の知っているVimと違う」と言われた経験はないでしょうか。私はあります。

Vimmerを大きく分けると、Vimをエディタだと思っている人達、
Vimを開発環境と思っている人達、
Vimをデスクトップ環境だと思っている人達の三種類に分けることができます。
私は当然、Vimをデスクトップ環境だと思っています。
このように同じVimmerであっても、Vimに対するスタンスが異なるため、意見が衝突することもあります。
なぜこのようなことが起こるのでしょうか。

ちょっと前に、Twitterで「プラグインを入れないVimは劣っていると思われている風潮がある(記憶が曖昧なので超意訳)」
という呟きを見ました。
私はその考えは間違っていると思います。
その理由についても回答します。

そして、なぜVimは20年もの長い間生き続けることができたのでしょうか。

今回はそれらの疑問にお答えします。

--------------------------------------------------------------------------------------

はっきり言ってしまいましょう。
それは、VimやEmacsがただのエディタではないからです。
私が思うに、VimやEmacsは「エディタを作るためのエディタ」、
つまり「エディタエディタ」だったのです!

な、何だってーーーーAA(略)

--------------------------------------------------------------------------------------

そもそも、皆さんは勘違いをしています。
自分でエディタを作らない限り、本当に満足するエディタなんてものは存在しません。
それは人によって、エディタに求めるものが異なるからです。
つまり、誰でも満足する万能なソフトウェアは存在しないことになります。当たり前です。

しかし、エディタを0から作るのは大変です。
エディタというのは大変に奥が深く、OSやプログラミング言語を0から作るのと同等の難しさがあるからです。
今時、0からプログラミングやOSを設計する人なんていませんよね?
だからこそ、人はあるエディタをベースにカスタマイズし、自分自身にあうエディタにしていきます。
エディタをカスタマイズする行為とは、程度の差はあれど自分のエディタを作っていることにほかならないのです。
おそらく、どんなエディタを使っている、どんな初心者の皆さんも、
最低一行・一項目はエディタをカスタマイズしているはずです。
えっ、一切カスタマイズしない? それはなんてすごい。尊敬に値します。

--------------------------------------------------------------------------------------

さて、VimやEmacsが他のエディタと異なり多数の信者を得て今も生き残っているのには理由があります。
カスタマイズの自由度が他のエディタとは違うからです。
Vimには標準で多数のオプションがあります。
それで満足できなければ、自分でプラグインをインストールするなり、プラグインを自作するなり、
ソースコードを変更するなり自由自在です。

VimやEmacsはプログラミング言語で言えばLisp、ブラウザだとFirefoxに例えることができるでしょう。
例えば、Firefoxのカスタマイズ行為は、ブラウザを作っていることに相当します。
だからvimperatorなんていう変態的なプラグインが出てくるのです。
まぁ最近ではViChromeというのも出てきましたけどね:-)

--------------------------------------------------------------------------------------

そろそろ分かってきたでしょうか。
我々が使っているのは、Vimではありません。
「Vimをベースにしたオレオレエディタ」なのです。

--------------------------------------------------------------------------------------

確かに、最初は純粋で混ざりけのないデフォルトのVimでした。
しかしカスタマイズを続けているうちに、Vimはあなたの望むような姿に進化します。
その結果生まれるエディタはもとのVimとは似ても似つかないものになります。
Vimは進化するエディタなのです。

--------------------------------------------------------------------------------------

私は、Vimのことを恋人や家族のように考えているので、
有名ゲームである、ラブプラスに例えてみます。
ラブプラスには、恋人のベースとなる女の子は3人いますが、ゲームを進めていくうちに
彼氏の好みにあった「カノジョ」に変わっていくのです。
その自由度の高さやリアルさが人気につながったのではないでしょうか。
VimやEmacsにおいてもこれは同じです。

いや、私ラブプラスは持っていないですけど。
三人のエディタを攻略する、エディタプラスを誰か作ってください。
お気にいりのエディタとゲームの中でキャッキャウフフできる世界は素晴らしいです。

--------------------------------------------------------------------------------------

だから私が「VimかわいいよVim」や「Vimは俺の嫁」「Vimは人生」
と定期ポストするのは問題がないということです。
嫁と書いてエディタと読むのがポイントです。
えっ、違う?
そして毎日Vim scriptを書くのは紳士の嗜み。
愛情を込めてVim scriptを書けば、Vimはきっと答えてくれるでしょう。

--------------------------------------------------------------------------------------

おっと話が逸れてしまいました。
つまり私のVimとあなたのVimは違います。
Vimの設定を大幅にカスタマイズしていると、
設定されていないVimや、他の人のVim、もちろんviが使えなくなってしまうのは当たり前です。
それらは違うエディタだからです。

違うエディタなのに、「誰のエディタが優れている」
「プラグインを入れないとVimと呼べない」というのは間違ってますよね。
それぞれのエディタは比較なんてできません。
優れたエディタを決めるのは皆さん一人一人なのです。
Vimでさえみんな違うのに、VimをEmacsや他のテキストエディタと比較して優劣を決めるのは間違っています。
人種差別と同様に、エディタ差別はいけません。みんな違ってみんな良い。

--------------------------------------------------------------------------------------

つまり、このujihisa.vimの集まりというのは、「Vimmerの集まり」というより、
「Vimをベースにしたオレオレエディタを作っている人達の集まり」です。
「俺の嫁(エディタ)自慢大会」でもあります。それは別名、宗教論争とも言います。
そこのところを勘違いしないようにしましょう。
素のVimを愛したい、もとい素のVimを使いたい人は、おそらく他のところへ行ったほうがよいです。
ありのままのVimを受け入れることができる、それも素晴らしい才能ですが、
この勉強会に来る意味はあまりないと思います。

--------------------------------------------------------------------------------------

さて、Vimが20年に渡って生き続けた理由も分かってきたでしょうか。
Bramさんが天才的だった、viをベースにしていた、オープンソースだった。
確かにそれも理由の一つですが、
私は「Vimがエディタエディタ」だったから生き続けることができたと考えています。
VimはLispのように、貪欲に機能を吸収したり、拡張をすることができます。
ベースが柔軟でなければ、ここまで生き残ることはできなかったでしょう。

Lispはかなり古いプログラミング言語ですが、今だに根強いファンを持って生き残っています。
VimやEmacsとの共通点は意外と多いと思うのですが、どうでしょうか。

--------------------------------------------------------------------------------------

私は、みなさんにVimに対して愛情を持って接してほしいと常々考えています。
「Vimを調教する」、「Vimはただの道具」という認識しかなかったら、Vimが可哀想じゃないですか。

Vimを使う、ということはつまりVimと同棲することに他なりません。
毎日Vimと過ごすことになるんですから、当たり前ですね。
Vimと過ごす時間が長くなるにつれ、
これまで見えていなかった欠点が目につくこともあるでしょう。
VimやVim scriptにはもちろん欠点があります。
「Emacsなら楽にできるのに……」そう憤りを感じる人もいるでしょう。
しかし、そもそも完璧なエディタなんて存在はしないのです。

人間でもそうなんですが、「悪い所はまず受け入れる」しかありません。
その上で、「Vimと一緒になって改善できるように努力する」ことが大事です。
一緒になって、というのがポイントですよ。
人から与えられたり、Vimがカイゼンされるのをただ待っていてはだめです。
とにかくVimのために手を動かしましょう。Vimに対する家族サービスですね。
それは設定をカスタマイズすることでもいいですし、プラグインを自作したり、
本体を書き換えても構いません。
Vimは文句も言わず毎日あなたのために頑張っているのですから、
あなたもVimに対し感謝の心を持ってそれに答える必要があるはずです。
それが愛の形なのではないでしょうか。

「結婚は忍耐」だ、と誰かが言いましたが、「Vimと暮らすということも忍耐」です。
少々悪いところがあってもそれを受け入れられる、
忍耐力がある人だけがVimを使いこなすことができるでしょう。

--------------------------------------------------------------------------------------

もちろん、みなさんがこの勉強会の後すぐにエディタを愛することができるとは思っていません。
焦らずに最初は友達から始めましょう。
それから恋人、家族へと徐々にレベルアップしていけばいいのです。

私自身Vimを愛することができるようになるまで、ずいぶんかかりました。
私がVimに恋をしたときは、おそらくneocomplcacheを作っていたときですが、
まだ愛のレベルには達していませんでした。
少なくとも「これが愛だ」と気付くことはありませんでした。
Vimを愛するようになったきっかけは、
開発環境勉強会の原稿を作っていたときだと思います。
原稿を作るにあたり、自分とVimの出会いについて見つめなおしていました。
それにより、Vimを愛する自分の心に気付いたのです。

Vimと暮らす人生は波瀾万丈です。
長年付き合うことで、Vimに対する愛が冷めてしまった人も見てきています。
vim-users.jpのメンバーも徐々に様変わりしています。
就職や進学、引越しなどの大きなイベントがあると、
徐々に心がVimから離れていってしまうのかもしれません。
私はそうなりたくないと思っています。

長くなりましたが、この講演で、みなさんのVimに対する思いが変われば幸いです。

--------------------------------------------------------------------------------------

第二部 「世界に一つだけのエディタ」

何も言わず、このスライドを見てほしい。

http://www.slideshare.net/Shougo/ss-10239308

コイツをどう思う……?
すごく……Vim愛に溢れています……。

ちなみに、第一部の感動をそのままに第二部に移行するという離れ業をやってのけました。

--------------------------------------------------------------------------------------

オマケ的な感想:

KoRoNさんのVimソースコードリーディングはかなりためになりました。
最近、またソースコードをいじれていませんが、自分もVimに機能を追加したいなぁ……。

今回はunite.vim関係や「Vim script勉強したい」というスライドが多かったように思います。
去年はそんな傾向がなかったので、良いことではないでしょうか。

thincaさんのソースコードをujihisaさんが実況するのに吹いた。
なんて一心同体。
たまには、そういうことをやっても良いのかもしれませんね。
初心者には、上級者がどのようにVimを使っているのかよく分からないようですので。

basyuraさんのTwitterクライアントは是非使ってみたいので、完成するのを楽しみにしています。

ujihisaさんのVimレベルを上昇させる方法。Lv 7, 8, 9の解説を聞きたかったなーー。
ちなみに、私はVisual modeを普通に使います。テキストオブジェクトも使いますけど。

懇親会で10人くらいのVimテクニックバイブルにサインをしました。
今回はVim愛についてのサインが多かったかな。
KoRoNさんからもサインを貰って満足。しまった、ujihisaさんからはサイン貰っていない……。
懇親会では、ひたすらVimについて語っていた気がする。
今回は酒を一切飲まなかったので、あれは酔っていたわけではないです。
Vimについてなら、あれくらい饒舌になるということ。
そういえば、KoRoNさんから「鋼のメンタル」という褒め言葉を頂きました。
きちょうこうえんがこうひょうでよかったです。

2011年9月26日月曜日

Yokohama.vim #2の感想

先日、Yokohama.vim #2に参加しました。
メモを取っていないので、記憶が曖昧ですが、とりあえず感想などについて述べておこうかと思います。

自己紹介


とりあえず、テーブルごとに自己紹介をしました。Vimの経験については10年くらい使っている人、つい最近使い始めた人と様々でした。
やはりというべきか、あまりVim力の高い人はいなかったです。
「Vim歴が長いと今の環境に満足してしまう」そうです。これがいわゆるVim世代間格差というものなのでしょうか。

「キーマッピングを考える」


tsukkeeさんの発表です。Vimを用いたプレゼンはVim使いとしてありがたいところです。
「ESCキーを楽に入力するにはどうするか?」というコンセプトで、
ベーシックなマッピングから、submodeやarpeggioの紹介もあり、思っていたより濃い解説でした。
なぜか途中で私のマッピング紹介が……。

「Shougoとフリートーク。Vimテクニックバイブルの裏話も聞けるかも?」


会場には、Vimテクニックバイブルを持っている人が半分くらいいました。
しかし、届いたばかりでまだ読んでいないようだったので、適当に質問に答えることに。
覚えている回答でいうと、

質問:「開発速度の秘密は?」
答え:「Twitterやブログを監視しているから。バグならその日のうちに直す。早いときは5分で直す」

質問:「Cを編集するのにオススメのプラグインは?」
答え:「ctagsでタグを作って、タグジャンプ、neocomplcacheを使う、くらいしかやっていない。それでもかなり十分だったりする。タグジャンプなら、unite-tagとかある」

質問:「Vimの正規表現に慣れません」
答え:「それはVim scriptを書いていないから。毎日書いていれば慣れる。Vimの正規表現は特殊なわけではない。世界が違うだけ」

そして、時間があったのでvimfiler Ver.3の紹介とか。unite.vim Ver.3による実装の説明をしたあと、簡単にデモをしました。
その後、vimshell Ver.9の新機能の紹介としてirbをvimshellバッファで実行するデモを行い時間切れ。

秋を楽しむ【スポーツの秋・読書の秋・行楽の秋】


本屋さんにVimテクニックバイブルを購入するイベントでした。私もついでに見に行きました。
自分の本が並んでいるのを見るのは初めての経験でしたね。購入してくださった皆さんありがとうございます。


私たちがバイブルから選ぶ5つの技


Vimテクニックバイブルをテーブル毎に読んでしゃべって、150の技の中から気に入った技を選んで紹介しようというセッションです。
なぜか発表形式でしたが、新鮮でした。意外と、地味なテクニックが人気でしたね。
私の班は私のVim話を延々と語っていたり、「ライブ修正しました」イベントをやったり、いつもの調子でした。

Shougoサイン会


Vimテクニックバイブルを持っている人の希望者に、約束通りサインをしました。
サインする言葉は、サインしてもらう人が好きなものを選ぶ方式。
「修正しました」サインが5人〜7人くらいで多かったですね。よほどインパクトが強かったのだろうか。
他には、「またMacVimか」や「僕と契約してVim使いになってよ!」とか「:Necoのアイコン」とかいろいろです。
なぜか握手を求める人まで。どうしてこうなった。
ちなみに、thincaさんやtaku_oさんにサインを求めたけれどことごとく失敗。
Vimmerはシャイですが、(私を除く)Vimテクニックバイブルの著者までシャイであることが明らかになりました。
わ、私はまだ諦めていないんだからね!

懇親会


tsukkeeさんの機能を取り込み、neobundle.vimにSubversion/Mercurial対応を追加しました。
他にはVimの開発体制の話とか、Vimへの愛を語ったりとか、いろいろ。

感想


さすがに三回目となるともう慣れたものですが、発表者がもっと居ると良かったなーと思います。
「次回発表したい」という人もいたので、それは期待できると思われます。
今回は参加者に女性が居たのがオドロキでした。(ujihisa.vimを除く)今までの勉強会は男性ばかりだったので……。
Vim界はもっと女性の使用者を増やすべきだと思います。はい。

2011年8月8日月曜日

開発環境勉強会の感想

開発環境勉強会へ行ってきたので、適当に感想とかを書いておきます。
各々の発表者の内容は、スライドや感想、ustを見ればある程度分かると思うので割愛します。

XMonadの話 pi8027



XMonadについて、ソースコードを含めて詳細に解説してくれていました。
もう一度XMonadを試してみようかとも思ったけれど、Window Managerへの興味が薄れている今日このごろです。

ちなみに、VimとEmacsを併用していたのが印象深かったです。意外とVimも使っているらしい。
シェルは「zshの本」で覚えたzshらしいです。
たしかにこの本はよくまとまっていますね。

Vimについて Shougo


私の発表。原稿は、本日書いた別ページである「開発環境勉強会の原稿」に公開しているので参照してください。
内容は、私とVimのラブロマンス物語です。
なぜか会場は笑いにつつまれていました。私は真面目にやっているんですよ!

スーツとEmacsと開発環境 kiwanami


lingrのEmacs部屋とかではよく会話をしていますが、リアルでkiwanamiさんを初めてみました。
cacoo.elやcalfwなどはやはりすごかったです。あの非同期処理いいなぁ。
「オフライン重要」が印象的でした。私もそう思います。
ネットワークはいつ切れるか分かりません。
ちなみに、EmacsではPDFを読んでいないらしい。ですよねー。

ベンチマークドリブン駆動開発 nyaxt


いかに集中できる開発環境にするか、というのは興味深いものでした。
私も、もっと作業に集中できるようにしないと。
遊ぶ環境は別マシンにする、というのはなるほどと思いました。
確かに私も誘惑の少ないLinux環境で作業していると、はかどります。

XKeyRemapについて m2ym


auto-completeのm2ymさんの発表。
最近elispを書いていないらしい。情熱が薄れてしまったみたいです。

XKeyRemapは汎用的なキーマッピング変更ソフト。ただし、まだ未完成らしい。
「自分はやる気がなくなった。他の人やってください」 えっ……。

TryIt.vim, Phrase.vimで多言語を効率よく学ぶ t9md


もともとEmacs使いでしたが、「手首痛い問題」によりEmacsを引退することになったらしいです。

TryIt.vimは選択したテキストをTryItバッファに貼りつけてQuickRun実行する。
QuickRunとの違いは、複数のバッファから切り貼りできるところだろうと思いました。

Phrase.vimはサンプルコードを集めて勉強するのに使うらしいです。
スニペットと似ていますが、目的が違うようです。
なかなか面白い試みだと思いました。

オレオレ環境の話 shinichiro_h


オレオレトロイで自己管理。すごい。
なぜか、一番に起動しているソフトがw3mでした。なんと……。
w3mが環境となっているらしい。その発想はなかった。
w3mで一番重要な設定:「今開いているページをChromeで開く」に吹いた。
やはりw3mだけでは生きていけないらしいです。

shinichiro_hさんは、オレオレWindowManagerを使っていて、
Windowを使ったシューティングゲームをデモしていました。
なにそれすごい。そして極めつけはメモリ使用量900KB!
今どきのWindow Managerが霞んで見えます。

貧乏人のためのマルチディスプレイ構築環境 tomy_kaira


6台ディスプレイすごい。さすがに、私はこんな環境は使いこなせないなぁ。

貧者のための入力デバイス todesking


HHKは高いので、Majestouchを切りとったお話。
「キーボードはいまだにDIYが通用する領域」は名言でした。

Dvorakについて kjm


これは良いDvorak講座。いや、私は使う気になれませんが……。

おまけ Shougoの開発環境


発表中に簡単に触れましたが、ここにも書いておきますね。

OS:Windows 7/Ubuntu 10.10
端末:Vim, ckw, GNOME Terminal, screenは使っていない
エディタ:Vim
シェル:vimshell, nyaos, zsh
ファイラー:vimfiler, あふw, Nautilus
VCS: git
キー配列:US, Vim only sticky shift
日本語入力:eskk.vim, ATOK 2008, uim-skk
キーボード:HHK Pro2
マウス:MX Revolution
Window Manager:Vim, Explorer, GNOME
PDFビューワ:Smatra PDF Viewer, Evince, AdobePDF Viewer

基本的にVim中心の生活なので、Vim以外にあまり凝ったことはしていません。
今回参加した限りでは、皆Window Managerにこだわりがあるようです。
しかし、自分の場合ほとんどVim内で生活していて、Vimさえあれば他はどうでも良いという性格なため、
他の環境はどうでもよかったのだということに気付きました。だからWindow Managerに興味がなかったんですね。
だから、私のWindow ManagerはVimです。

まとめ


余談ですが、会場はLinux(Ubuntu/Debian)が多かったですね。
やはり、LinuxのほうがWindow Managerもいじれるし、開発環境の最適化に熱心な人が多いのだろうか。
Macもそこそこ居ましたが、予想していたよりは少なかったです。
ちなみに、Emacs/Vimは半々くらいだったような気が……。
いろんな環境の人達がいて、なかなか新鮮な発表を聞くことができました。
今度は関東のEmacs勉強会で「Vimから見たEmacsについて」を発表したいので、誰か招待してください:-)

開発環境勉強会の原稿



<br /> /home/shougo/勉強会/開発環境勉強会/development.vp <br />


Vimについて




まずは自己紹介











  • Shougoです。

  • 知っている人は知っている

  • 得意な言語は当然Vim script

  • 私のプレゼンは「抜群な安定感」らしい

  • 職業:普通のVim scripter(ということに……)

  • 今回はせっかくなのでVimでプレゼンするよ!




今まで作ったプラグイン









  • neocomplcache, vimshell, vimfiler, vimproc, unite.vim, echodoc

  • Emacs使いの人は、これに脳内で変換:

  • auto-complete.el, eshell.el, dired.el, comint-mode.el, anything.el, eldoc.el




今回のスライドの内容









  • 昨年はVimプラグイン中心に話をした

  • 今年はさすがに疲れたので、違うことをテーマにスライドを作っている

  • どうせプラグインの話は自分以外にもやってくれる人がいる

  • Yokohama.vim #1: 「Shougoの開発環境」

  • ujihisa.vim: 「5分でまなぶVimとVim plugin」

  • 開発環境勉強会:「Vimmerの異常な愛情」「Vim界 News in 2011」




第一部・Vimmerの異常な愛情



またはなぜShougoがテキストエディタについて心配するのを止めて
Vimを愛するようになったか

はじめに



プログラマにとって、テキストエディタとは一生涯のパートナーであり、
それを選択するということは、一生の伴侶を決定することに相当する。
ここで紹介するのは、紆余曲折を経てVimに辿り着いた男の物語である……。

初恋はVisual Studio









  • 私はVisual Studioでプログラミングを始めた

  • つまり、初恋のエディタはVisual Studio

  • あのころは、GUIプログラミングにゲームプログラミングと希望に燃えていた(遠い目)




様々なエディタに浮気していたあの頃









  • Visual Studioはそのころ有料だった上、動作が遅かった

  • さらにスクリプト言語には使いにくい

  • 様々なエディタに浮気しつつ、サクラエディタに落ちつく

  • エディタへの恋物語も波瀾万丈

  • これが俗に言う、「エディタ活動」略して「エディ活」と呼ばれるものである

  • ちなみに、この勉強会も「エディ活」の一種ですよね:-)




Vimとの出会い









  • 私とVimとの出会いは5年くらい前

  • 第一印象:「このエディタは変態だ」

  • 動作が気持ち悪いと思っていた




サクラエディタに限界を感じる









  • サクラエディタはカスタマイズに限界があった

  • Vimは豊富なシンタックスハイライトや様々なプログラミング言語に対応していたのが魅力的

  • Vimが気になり始め、本格的に手を出すことに

  • テキストファイルの関連付けをGVimにして、スパルタで操作を覚える

  • xxdでバイナリファイルを編集する程度には成長する




Linuxに手を出す









  • zshやscreenを覚える

  • Vimを毎日使って、カスタマイズを覚える

  • 設定はコピペだったけど……。

  • Vimの力が段々分かってくる

  • Vimへの恋が始まったのはこの頃?

  • ちなみに、このころEmacsも一応使えるようになっていた




kana氏のブログに衝撃を受ける









  • 書いてあることが全然分からない

  • 自分はVimのことを知らなかったのだと実感する

  • 言うなれば、C言語で初めてポインタを理解したのと同程度の衝撃

  • ちなみに、このとき.vimrcは300行くらい

  • Vimを本格的に勉強しようと思った

  • Vimへの恋が愛へと変わりつつある




lingrのvim-users.jpに参加する









  • ちょくちょく発言し始める

  • この頃はkanaさんがよくvim-users.jpに居て、いろいろ教えてもらっていた

  • 質問した瞬間に答えが返ってくる、恐しい場所だった

  • 今はほとんどkanaさんはいない……。




autocomplpop.vim(acp.vim)の挙動を調査する









  • 以前から、autocomplpop.vimをLinuxで使うと日本語入力が暴走するバグに悩まされていた

  • そのころ、autocomplpop.vimはメンテナンスされていなかった

  • kana氏と協力して原因を突きとめることに成功




neocomplcacheの誕生









  • autocomplpop.vimの実装を見るにつれ、Vimの補完の限界を痛感する

  • もう補完システムを自分で作ったほうが良いと思った

  • auto-complete.elに負けたくなかったのも理由

  • altautocomplpopという名前だったが、紛らわしいので改名する

  • neo+complete+cache=neocomplcacheという名前になる




そして伝説へ……









  • この頃には、.vimrcは1500行を越える

  • いつのまにか、色んな人達を追い抜いていた

  • もうVimがないと生きていけない

  • その後はvimshellを公開したり、vimprocの開発を引き継いだり……

  • vimfiler, unite.vimとかを作る

  • どうしてこうなった!




私にとってのVimは?









  • 環境であり、OSであり、VMであり、大事なパートナー

  • かれこれ、5年以上付き合い続けている

  • リアルでも、5年以上毎日付き合うというのは大変なはず

  • それはテキストエディタであっても同じ

  • 毎日Vim scriptを書くためには、やはりVimに対する愛がないとできない

  • Vimに対する愛をいつまで続けることができるかが重要

  • 一時の恋では、エディタとの関係は長く続かない

  • 「エディタへの恋は愛に変えよう」




番外:なぜEmacsは選ばれなかったのか?









  • 自分の環境が長らくWindowsメインだったから

  • WindowsでのEmacsは地獄

  • あれはLinux/UNIX環境でEmacsに慣れている人が、Windows環境で無理矢理使うもの

  • 初心者にはオススメできない

  • Windows環境でEmacsをマスターできた人がいたら、秘策を教えて欲しい




第一部・完



皆さんも、この勉強会で一生のパートナー(ツール)を見付けましょう!

第二部・Vim界 News in 2011









  • 去年は、Vim 7.3でVim界が大いに盛り上がった(自分の中では)

  • 残念ながら、今年はVimがバージョンアップする気配なし

  • Bramさんが忙しいらしい……。

  • 来年に期待。Vim 7.4になるか、Vim 8.0になるかは分からない

  • 個人的にはVim 8.0に来て欲しい




Emacs界の盛り上がり









  • 最近はEmacs界が勢い付いている

  • 去年の「Emacsテクニックバイブル」、今年の「優しいEmacs Lisp講座」

  • Software Designにおける「Emacsのトラノマキ」の連載

  • 三月にはEmacs 23.3がリリースされ、Emacs 24も開発中




Vim界の悲哀









  • Vim界には、良質な記事や書籍が不足している

  • まともにVim scriptを書ける人が書いた書籍がほとんどない

  • これはVim界の大きな損失

  • Vim勉強会に参加すると、必ずといっていいほど聞かれるのが

  • 「Shougoさんは、Vimの書籍を書かないんですか?」

  • この声になかなか答えられないのが悲しかった




と、いうわけで……。









  • 今年、ついにVimの書籍が刊行される!

  • 書名は「Vimテクニックバイブル」


  • 中身は「Emacsテクニックバイブル」のVim版

  • イメージカラーはVimグリーン

  • EmacsテクニックバイブルはEmacsブルー(パープル) :-P

  • ./Emacs_cover.jpg




Vimテクニックバイブル









  • unite.vimで進化する新しいVimの常識を教えます。

  • あなたはVimの本当の姿を知っていますか?




Emacsテクニックバイブルのキャッチコピー









  • anything.elで新しいEmacsの世界を教えます。

  • あなたはEmacsを使えていますか?




今までにないほどの豪華執筆陣!









  • taku_o(名無しのVim使い)

  • yukimi

  • mattn(webapi-vim, zencoding.vim, Vimにパッチ多数)

  • thinca(quickrun, ref.vim)

  • fuenor(QFixHowm, QFixGrep, JPFormat.vim, Vim-UTF8)

  • Shougo(neocomplcache, vimshell, vimproc, unite.vim, ...)




プラグインの紹介を中心とした豪華な内容!









  • Tipsの数は全部で150

  • 定番からマイナーまで幅広く解説している

  • プラグイン製作者が執筆していることも!

  • vimfiler, netrw, quickrun, ref.vim

  • vimshell, Conque, skk.vim

  • neocomplcache(スニペット機能の解説を含む), zencoding.vim

  • QFixHowm, QFixGrep, JPFormat.vim

  • autodate.vim, project.vim, ...




Vim scriptが分からない初心者でも安心!









  • :helpの読み方

  • Vim script基礎文法最速マスター(改訂版)

  • マッピングについて

  • オプションについて

  • Vimプラグインの管理

  • :autocmd




最近のVimといえば、unite.vimは外せないよね!









  • unite.vimは1つのChapterを贅沢に使用して解説

  • おそらく、30〜40Pageくらいある

  • 他のプラグインとの連携

  • カスタマイズ方法についての解説

  • source, kind, action, filterの解説

  • sourceの作り方まで載っている!

  • 作者が自ら書いているから、情報が正確で安心

  • unite.vim Ver.2.2対応(一応)

  • あまりに新しい機能は解説できていませんが……

  • これを読めばあなたもunite.vimマスターに




もちろん、Emacsの人達にもオススメ









  • Emacsを使っている人も、異文化交流は重要

  • 同じ環境で満足していたら、何も生まれない

  • Vimや他のエディタからも刺激を受けるべき

  • だからこそ、この開発環境勉強会に参加しているはず

  • この本を読めば、最近のVimの機能が分かる

  • 例:unite.vimとanything.elの違いが分かる

  • 一身上の理由により、Vimに乗り換えるときも安心:-)




現在確定している情報









  • ページ数は384P。Emacsテクニックバイブルと同じ。

  • 値段は¥2, 980+税

  • なんとか¥3000は切った……。

  • 若干Emacsテクニックバイブルより高い

  • 発売日は9月終わり?

  • 詳しい情報については、今後順次発表される予定




おわり









  • それでは、ご静聴ありがとうございました!

  • またどこかの勉強会で会いましょう

  • Happy Vim scripting!