2009年12月10日木曜日

neocomplcache Ver.4.00の新機能

neocomplcache Ver.4.00がリリースされました。
http://github.com/Shougo/neocomplcache/tree/v4.00

かなりの新機能や修正が入っているので、安定するまでに時間がかかりそうですが、
どのような部分が変更されているのか簡単に紹介しておきます。

・頻度情報をneocomplcacheのプラグイン内で共有するようにしました。
候補の順番が改善されます。

・頻度計算ルーチンの書き直し。

・メモリ使用量の割に効果がないので、疑似3-gramの補完を廃止、2-gramの文脈補完になりました。

・気付いたバグやレガシーなオプションを廃止。

・syntax_completeの強化。TeXのキーワードを正確に認識します。

・キャッシュ速度の改善、共通ルーチンのライブラリ化。キャッシュはかなりの部分に手を加えました。特にキャッシュしたファイルからの読み込みが速くなってます。

実用的に使えるようになってきたので、どうぞお試しください。

2009年11月23日月曜日

neocomplcacheの新機能 vim_complete

今回はneocomplcache Ver.3.17に搭載されたvim_completeの解説。

vim_complete.vimとは、Vimのオムニ補完を実装するために作られたneocomplcacheのプラグインです。Vim標準のVimScript補完はVimScriptから呼ぶことができないので、1から実装しました。

次のような機能があります。
・組み込みコマンド・関数・mapping引数・autocmdの引数の補完
・定義されている変数名やマッピング、augroupの補完

さらに、開いているVimScriptを解析して、次のようなことも可能です。
・ローカル変数や引数の補完
・スクリプト関数・スクリプト変数の補完

ちなみに、必要なくなったのでsyntax_completeはfiletypeがvimの場合、動作しないようになりました。
ちなみに、この記事は今後まとめ直して、VimHacksに載せる予定です。

vimshellのToDo

最近更新が滞りがちなvimshellですが、一応今後やることは決まってます。
忘れないうちにここに書いておこうと思います。
neocomplcacheもそうですが、新たな問題が発生して、全然ToDoが進まない今日この頃。
機能的には改善しているのが救いです。

・グロブがマッチしない場合、zshのように、現在エラーになる。Bashのように空にするべき?

・構文解析パーザを書き直し。Lexical analyzerとparserを書いて、分離して……。というVimScriptでは考えられないことをやらないといけないかも。

コマンドのインテリジェントな補完システム。
内部コマンドの補完は自分で作らないと。外部コマンドはzshを呼び出せるようにする。
->現在実装中。実装完了するにはかなり時間がかかりそう。
->Ver.6.00で実装しました! zsh_completeはまだです。

・zshのzptyのように、端末入出力を自動化する内部コマンドの追加。
どうせ似たようなことをやっている。

・zargsを移植? 拡張ブログの内容をファイルに書き出し、xargsに渡す。

・履歴に登録しないコマンドパターンを定義するオプションの追加
g:VimShell_IgnoreHistoryPattern

openコマンドは環境をきちんと判定するように。
-> Ver.6.03で実装中。

, , はプロンプトを削除しないように置き換える。

・ENV=value cmdの実装。
(local ENV=value; cmd)というようなコマンドが解釈できると良いな。

・`=$hoge`とすると、変数を置換してからevalするように。

・'や"は行をまたいでも認識するように。

・制御構文の実装。多分一番難しい。

・time内部コマンド コマンドの実行時間を計測する。
reltime()を使って実装。コマンド列を評価せずに一つにまとめる構文が欲しい。

・cat, more(less)内部コマンドの実装。内部コマンドも標準入力を解釈する。

・vimshellバッファを初期化する際に、setlocal nopasteしておく。
他のオプションもftplugin/vimshell.vimで設定。
->ftplugin/vimshell.vimは廃止予定。
->ver.6.00で廃止しました。

・別バッファのvimshellのカレントディレクトリに移動するcdd内部コマンドを追加する。
cdd add, cdd delでディレクトリを追加・削除する。
->別バッファのディレクトリに移動するbcd内部コマンドを追加した。これは便利。まだ補完は出来ない。
->補完も実装しました!

・hoge && fugaはfishみたいにhoge; and fugaとしたい。

なぜかWindowsではコマンドの終了ステータスがうまく取れない。
->vimprocのバグだったので修正。

・topのようにコマンドを実行するtoplessを移植。

s:error_bufferやs:print_bufferは廃止して、vimshell.vimに一本化する。
interactive.vimはautoload/vimshell/interactive.vimに移動。

->Ver.6.00で実装。

・ドキュメントの充実
実はここが一番重要だったり。自分が気の向くままに実装した内部コマンドの数々は、
さすがにマニュアル書かないと気付いてもらえないこと間違いなし。
作者でさえ、時々仕様を忘れます。

2009年11月10日火曜日

neocomplcacheのToDo

本日、neocomplcache Ver.3.11がリリースされました。
http://github.com/Shougo/neocomplcache/tree/v3.11
クイックマッチの復活やメンバ補完の実装、ファイル名補完の自動呼び出し等、
新機能が目白押しなので、是非お試しください。

さて、neocomplcacheの目玉機能もほぼ実装し終わったので、忘れないうちにneocomplcacheで今後実装するであろう機能についてメモしておきます。

キーバインドにより、一時的に補完関数を呼べるようにする。
inoremap <expr> neocomplcache#call_complfunc('hoge')みたいな感じ。

->Ver.4.xxに、completefunc_completeを作成して実装予定。
->実装しました。

現在プラグインごとに実装している、候補のキャッシュを統合し、簡単に利用できるようにする。
->早めに実装したいところ。Ver.3.22にて、一部のルーチンは統合。次はバッファとタグを統合する予定。
->Ver.4.00にて、完全に統合した。Ver.4.xxではファイルタイプごとに頻度情報を利用したい。

・ヘルプをそろそろ見直しておく。特に英語ヘルプが追いついていない。
->Ver.3.15で英語ヘルプは大体見直した。一度総点検が必要だが……。

buffer_completeのキャッシュ構造を見直し。
candidatesは削除。
->candidatesはVer.3.13で削除。代わりにInsertLeaveでキャッシュをするようにした。行の変更関知は保留。buffer_completeのキャッシュはVer.4.00で大改造して、満足のいくものになった。

・インクルード補完やタグ補完で_や~から始まる候補を削除するため、g:NeoComplCache_TagsFilter[filetype]を追加。キャッシュを構築するときにフィルタリングする。
->Ver.4.02で実装予定。

・インクルード補完のキャッシュはファイルタイプ変更時に構築し直すようにする。インクルード補完でキャッシュするのは少しずつ行う。buffer_complete.vimのようなデータ構造を持つようにする。

・現在インクルード補完では、パターンの解析に'include'を使用している。ただし、初期値がC/C++形式なので問題。filetypeがC/C++でない場合は'^\s*#\s*include'を使用しない。

・オプションを追加する。
g:NeoComplCache_AutoCompletionTime
自動補完のポップアップメニューが出るための時間
g:NeoComplCache_EnableCompletionMovedI
CursorHoldIではなく、CursorMovedIのタイミングで自動補完する。以前のneocomplcacheに近い挙動。

-> CursorHoldIには候補がなくなった際に呼ばれないという致命的な不具合があるので、Ver.3.12で廃止した。Ver.3.21にて、キーが入力されていたらスキップするように修正。

・snipMateのスニペットディレクトリを自動認識する
-> Ver.3.12で実装。

buffer_complete, snippets_complete以外のプラグインもComposite filetype(php.symphonyみたいなもの)に対応させる。
->Ver.4.07で実装。

・filetype pluginの実装、vim_completeのfiletype plugin化。
->Ver.4.xxで実装予定。

・vim_completeにおいて、Dictionaryの要素も解析する。
->Ver.4.xxで実装予定。

2009年11月6日金曜日

TermtterをWindowsにインストールする

termtterをWindows上のRubyにインストールのが、あまりに面倒なので、やり方を公開しておきます。

1.Rubyをインストール
2.rubyforgeからgem-1.3.5.tar.gzを落としてきて解凍
3.gem install termtter
4.termtterコマンドを実行する
エラーが出る場合は、SSLEAY32.dllとzlib.dllをC:\ruby\binにインストールする必要がある。
http://jarp.does.notwork.org/win32より、openssl-...-mswin32.zipとzlib-...-mswin32.zipを入手する。それを解凍してコピーすると良い。
さらに、iconv.dllがC:\ruby\binにないとエラーが発生するのでKaoriya.netから入手。
readlineがないと、またエラーになるので、Win32版のreadlineをC:\ruby\binにインストールする。このとき、readline5.dll -> readline.dllとリネームしないと認識しない。

苦労した末にtermtterを実行した結果がこれです。

2009年10月29日木曜日

Lingrの宣伝

また更新が若干滞り気味ですが、久しぶりに記事を書きます。
私は復活したLingrに常駐しています。
皆さんからの生の声を聞きたいので、ぜひ皆さんもおいでください。

http://lingr.com/room/vim
http://lingr.com/room/shell
http://lingr.com/room/completion

ちなみに、Vim部屋はVimについて語るところで、
補完部屋は補完の話なら何でもOK。
シェル部屋は究極のシェルについて語り合うところです。

2009年10月15日木曜日

最近のneocomplcacheのスクリーンショット

そろそろ大分機能が増えてきたので、最近撮影したスクリーンショットを晒しておきます。

パワーアップしたファイル名補完

書き換え不可能なファイルは[-]を表示したり、実行可能ファイルを区別して表示します。

オムニ補完の統合

ワイルドカードやクイックマッチも動作します。

レジスタ補完

スニペットも機能が強化され、レジスタの内容をスニペットにより補完できるようになりました。

vimshellとの統合

vimshellはneocomplcacheがインストールされているとき、neocomplcacheを使用して補完を行います。

2009年9月28日月曜日

neocomplcache Ver.3.00

neocomplcache Ver.3.00をリリースしました。
Ver.2.00, Ver.2.50に匹敵する大規模な変更があります。
とはいっても、ディレクトリ構成が変更になり、機能の統合が進んだくらいですけど。

Ver.3.00で修正・変更された部分を書き出しておきます。
・キーワード収集のアルゴリズムを若干修正、HTMLにおいて、タグ全体を補完できるようになりました。ただしオムニ補完が優先されるので、一度ポップアップを閉じてください。
・一部のコマンドの補完を修正。バッファ名で指定するようになりました。
・スニペット補完を改良、エラーも修正しました。
・ファイル名補完のエスケープがおかしかったバグを修正。
・オムニ補完とファイル名補完を分離、通常の補完もkeyword_complete.vimとして分離しました。
・以前のkeyword_complete.vimを名前変更。buffer_complete.vimとしました。
・Next keyword completionを統合しました。
・以前のneocomplcache#keyword_complete#caching_percent()は動作しません。neocomplcache#caching_percent()を使用してください。

2009年8月27日木曜日

編集紀 エヴァンビムオン

『編集紀エヴァンビムオン』(へんしゅうきエヴァンビムオン、Editing Period EVANVIMON)は、架空の連続テレビアニメ作品。
200x年10月4日から201x年3月27日まで全26話にわたりテレビ新東京系列 (TNXN) で放送された。

時は、西暦2015年。
15年前に南極で起こった大災害・セカンドビムパクトにより総人口の半数近くを失った人類は、絵出徒(えでと)と呼称される新たな脅威に見舞われていた。
国連直属の非公開組織である特務機関NERVIM(ネルビム)は、襲来する絵出徒に対抗、殲滅するため、汎用人型編集兵器 人造エディタ エヴァンビムオン (EVA) を極秘に開発する。そのパイロットに選ばれたのは、14歳の少年・少女であった。
主人公である少年「編シュウジ」は、「幼少時のトラウマ」と「父親との疎遠な関係」から、他人と接触を好まない内向的な少年であるが、ネルビムの総司令である父親メドウによって、EVA初号機のパイロットとして突如選任される。シュウジをはじめとする EVA のパイロットたちは、世界の命運を託され、命をかけて戦う過酷な状況に追い込まれ、傷ついていく。
セカンドビムパクトの真相、襲来する絵出徒の正体、そして秘密裏に進められる「人類自動補完計画」の全貌。多くの謎が絡み合い、主人公であるシュウジの挫折と成長を追いながら、物語は進んでいく。

2009年7月23日木曜日

vimshell != VIM-Shell

vimshellと紛らわしいプロジェクトにVIM-Shellというものがあります。これは「Vimのなかでシェルを動かそう!」というコンセプトで、Emacsでいうと、M-x shellやM-x ansi-termと似たようなものです。
これはこれで有用だと思いますが、シェルが設定されていないと動作しない上、使うシェルに依存した処理が多くなってしまいます。私がvimshellで目指しているのは、EmacsでいうM-x eshellのように、「Vimの中で動作する新しいシェル」です。

vimshellは現在基本的な機能は実装することができました。
しかしzshやbashと比較すると、シェルとしての機能が不足していることは否めません。
www.vim.orgにも登録したいのですが、仕様もこれから変更されるでしょうし、まだ時間がかかりそうです。

vimshell Ver.5.26, neocomplcache Ver.2.63 Released!

最近忙しく、ブログの更新はおざなりになってました。
vimshellの開発は進んでいます。neocomplcacheの更新もやってますが、vimshellで使いやすくするために変更したものが多いです。

ざっと変更点を挙げておきます。

vimshell Ver.5.26
・g:VimShellEnableInteractive=0でないと、プログラムの実行がエラーになるバグを修正
・iexeで補完ができるようになった
・iexe &でヒストリを参照できるようになった
・iexe &で<C-t>を押すことにより、プログラムの補完を呼び出せるようになった。
・バックグラウンド実行したプロセスのバッファにfiletypeを設定、neocomplcacheで補完できるようになった。
・vimshellバッファのシンタックスハイライトを改善した

neocomplcache Ver.2.63
・ERBのスニペットを改善した
・vimshellでのキーワードパターンを改善した
・Railsで使いやすいように、ERBはrubyのバッファからキーワードを参照できるようになった
・ファイル名補完の動作を改善、長いファイル名でも見やすくなった

Windowsユーザーでvimshellを使う場合、
cdのパスは/を使ってください。
\はエスケープシーケンスになっているので使えません。

2009年7月8日水曜日

vimshell Ver.5.22 Released!

vimshell Ver.5.22をリリースしました。
今回の新機能はsudo内部コマンドです。
管理者権限が必要なコマンドも、
sudo cp -R hogehoge piyopiyoという感じで扱えます。
ファイルを管理者権限で編集したいときは、
sudo vim hogehoge
です。ただしsudo.vimが必要です。
このコマンドは現在Linuxでのみ動作します。
Macには今度対応する予定です。

その他の新機能:
・<C-]>にて、前のコマンドの引数を入力できるようになりました。
・run-helpを実装。<C-r>hでmanを引けます。
・iexeやbgの動作が改善されました。
・aliasがうまく定義されないバグを修正しました。

vimprocも更新しました!
splhackさんの協力により、Mac OS Xに正式対応。

makeするときは、make -f make_mac.mak
とコマンドを叩いてください。

2009年7月6日月曜日

ギャグマンガVim和 OP

『ギャグマンガVim和(ギャグマンガ びむより)』
※:ギャグマンガ日和2のOPを脳内再生しながら


Vim


[はじめに]

テキストエディタは、仕事にも現実逃避にも役立つすばらしいものです。
でも、Eclipseはなんだかごちゃごちゃしてるからイヤ、かといって
Emacsは小指が痛くなるから嫌い、
という方にお薦めのテキストエディタがあります。
そう、Vimです。
Vimを使いこなすために、
ルールを正しく覚えましょう。

日本Vim普及協会会長 カナ ナツノ


[Vimのルール]

Vimは図のようにhjklでカーソルを移動し、Insert modeに移動してテキストを編集するテキストエディタです。
このエディタの特徴として、多くのモードを動的に切り替えることができます。


[Vimの有名人]
Vim界で有名な人としては、次の3名がいます。

ブラム
Vimを作りました。

カナ
Vimを手足のように使いこなすことができます。

ヤマト
Vim四天王と戦い、世界を救いました。


※:Vimを使うポーズを思い浮かべましょう
(両手はホームポジション上に)
人差し指がfとjの上に置いてなければ反則です。
反則者は問答無用で退場です。

(右足を前に)
一見タイピングしにくそうですが、
Kinessis Keyboardのフットペダルと併用すると意外に
これでもいいか、と
思えてきます。
(人生に似ていますね)

(笑顔で)
大嫌いなアイツが
Ctrlの押しすぎで腱鞘炎になったと
聞いたときのようないい笑顔で。

(左足はマウス)
使わない左足には
マウスでも握らせて
おきましょう。

よってきたEmacs使い


[VimのEx-modeについて]

VimはQコマンドで完全にexとして動作します。
でも、使いません。
(exは時代遅れだからです。)


Vimユーザーはキーを自由にマッピングしてVimをコントロールします。

[あるVimmerのキーマッピング]

; -> :

<Space>ma -> :make

m -> <Leader>

<Leader><Leader> -> :update

:Neco<CR> -> echo " A A\n~(-'_'-)"


こぼれ話
☆Vimの起源とは?

ブラムがAmigaコンピュータでstevieというvi風エディタを改造しました。
これがVimの始まりだといわれています。

※:Emacs使いはviとVimを混同したがるので注意しましょう。


[仲間を増やしましょう]
寂しくなったら

あまりにVimに慣れ親しむと、周囲にVim使いを増やしたくなります。

(注:いくらやっても改宗してくれない場合があります)

図Aのように、近くの人に対して
「それ、Vimでできるよ」と笑顔で声をかけましょう。


[<ESC>が辛くなったら]
Vimを日常的に使っていると、<ESC>連打は指の負担となります。
図Bのように、他のキーに<ESC>をマッピングしましょう。


以上のことに気をつけて
さあ、始めましょう。
Happy Vimming!

Vimを始めたことは、上司には言わないようにしましょう。


~テキストエディタ劇場~
ギャグマンガVim和

2009年7月1日水曜日

エスケープシーケンス対応作業中

vimshell Ver.5.18にて、ようやくパイプ処理が実装できました。

現在はエスケープシーケンスに対応するべく、開発中です。



GVimでやっと256色表示に対応しました。ターミナルではまだ試してません。


オリジナルだとこのような表示になっています。見比べてみてください。

2009年6月23日火曜日

最近のvimshellに追加された機能

ブログにはあまり更新点を書いてなかったので、
今の機会にまとめて書いておきます。

vimshell Ver.5.14-Ver.5.16に追加された機能:
・``と`=`が実装されました。``はsystem()の結果を評価し、`=`はVimScriptの式をeval()した結果を返します。
・引数先頭の~がホームディレクトリに置き換えられるようになりました。ただし、ホームディレクトリへのパスに空白が含まれると、多分動作がおかしくなります。
・システム変数を実装。$$systemにはコマンドの終了ステータスが格納されます。shとは互換性がありません。
・ATOK X3環境でも動くようにしました。
・エラー表示を改良しました。g:VimShell_EnableInteractive=1ならば、コマンドのエラーもハイライトされます。
・>, >&, < といった入出力のリダイレクションを実装。内部コマンドにも有効です。
・/dev/nullを実装。まだ出力にしか使えません。
・special commandを実装。引数はVimScriptとして評価されます。
・変数に代入するletと、引数をVimScriptとして評価・出力するevを実装。
・echo内部コマンドを実装。
・ワイルドカードを実装。*と?のみ使えます。
・Windows環境でもワンライナーが使えるようになりました。ただし、g:VimShell_EnableInteractive=1の時のみです。
・コマンド検索ルーチンを改良しました。
・コマンド補完を改良しました。内部コマンドも補完できます。
・g:VimShell_ExecuteFileListが"bg firefox"のように複合コマンドを指定できるようになりました。

2009年6月18日木曜日

ビムマスターヤマト 誤植編

『ビムマスターヤマト・誤植編』

Vim野「もうっ、なんだよコレ! 担当に文句言ってやる!」

Vim野「小島さん、酷いじゃないですか! 読みましたよ、今月号の僕の漫画!」

小島「え、酷いって? ストーリーが?」

Vim野「ぐへぇぇぇぇっっっ!!!」

Vim野「違いますよ! 誤植ですよ誤植! セリフの文字が間違ってるんですよッ!」

小島「え~? ほんとに~? どこどこ~? 何ページ目?」

Vim野「ほら、ヤマトが四天王の一人ショウゴに挑む前の会話で、」

Vim野「『あいつだけは許さない』って最高にかっこいいセリフが……」

「キーボードだけは許さない」

Vim野「酷いっスよこれ!」

小島「あ、ほんとだ。やっちゃった」

Vim野「いや、やっちゃったじゃないですよ、もうっ」

Vim野「主人公がいきなりマウス主義に目覚めちゃったみたいじゃないですかッ」

小島「あっはっはっは!」

Vim野「はっはっはぁー? 何でご機嫌なんすかッ」

Vim野「誤植はここだけじゃないんすよッ」

小島「え~? ホントぉ~? どこどこ」

Vim野「主人公が暗い過去を語って、俺の.vimrcは消えないんだって決意を新たにする超渋いシーンで……」

「オレの.emacsは消えないんだ」

小島「あ、ほんとだ。単語間違ってる」

小島「やっちゃった♪」

Vim野「いやだから、やっちゃったじゃないでしょ、ちょっとぉーっ」

小島「はっはっは♪ .emacsってちょっとナニ? 両刀使い? はっはっはっは♪」

Vim野「はっはっはっー、じゃないんですよッ!!」

Vim野「なんでそんなに上機嫌なんすかッ!」

小島「イヤー、実は先日彼女ができちゃって」

Vim野「え、ほんとですか? 良かったですね」

Vim野「でもこっちは全然よくないんすよ」

Vim野「まだ誤植あるんですよ」

小島「えー、どこどこ~」

Vim野「ほら、ついに現れた四天王のショウゴが「お前がビマーか?」っていう超緊迫した場面で、」

「お前は、ポエマーか?」

小島「あ、ほんとだ」

Vim野「お前はポエマーかってなんですか!!」

Vim野「どんなボケをしたらそういうツッコミがかえってくるんですか、もうッッッ」

小島「…………」

Vim野「また『やっちゃった』とか言うんじゃないんでしょうね」

小島「やっちゃったぜ!」

Vim野「いや、『やっちゃったぜ!』じゃないですよ。なにちょっとカッコイイ言い方してんすかッ」

Vim野「誤植はまだあるんすよ」

小島「えー、どこぉ~? 彼女いない暦0年の僕がどんな間違いをー」

Vim野「その次のコマですよ」

Vim野「ヤマトが『俺はヤマトだ』って言う超クールなシーンが、」

「俺はポーケンだ」

Vim野「なんで主人公いきなり名刺宣言してるんすか!!」

小島「あ、ほんとだ。間違ってる」

Vim野「間違いすぎですッ」

小島「はっはっは♪」

小島「やっちゃったぜ」

Vim野「カッコよく言わないでください。気にいったんですか、その言い方!」

小島「気に入ったんだぜ」

小島「取っちゃヤだぜ」

Vim野「取らないですよ、そんな喋り方ッッッ」

Vim野「それよりもっとあるんですよ誤植」

小島「えー、まだあるのー」

小島「どのへんなんだぜ?」

Vim野「どのへんなんだぜ? そんな無理に言わなくても」

Vim野「最後ですよ、最後のページッ」

Vim野「ヤマトが俺の新しい補完を見せてやるっていう超ドキドキのシーンですよ」

小島「どれどれ」

「俺の熱い抱擁を見せてやる!!!」

小島「あ、ほんとだ。やっちゃったぜ!」

Vim野「なんですか「熱い抱擁」って!」

小島「ごめーん、彼女のことで頭がいっぱいで、ついうっかりーー」

Vim野「しかももっと酷い誤植が最後のコマにあるんですよ」

Vim野「ヤマトが炎の剣を構えて、うぉぉぉって突っ込むところですよッ」

小島「えー? そんなセリフ間違えないと思うけどーー」

Vim野「まちがってんすよっ」

まっぷ!

Vim野「なんスか、まっぷって!? も~意味わかんないしっ」

Vim野「しかもこのコマについているアオリ文句、なんすかコレ!」

『彼女が出来ましたー』

Vim野「何自慢してんすかッッッ」

小島「やっちゃったぜ!」

Vim野「やっちゃったぜ!じゃないでしょ、アオリ文は自慢したくてつい言っちゃっただけでしょーッ」

小島「言っちゃったぜ!」

Vim野「だから言っちゃったぜじゃ……あーもう、なんかもーー」

Vim野「やってられないんだぜ!!」

小島「ごめんねだぜ♪」

リダイレクションを実装中。

現在、vimshellのリダイレクションを実装中です。
開発中の画面はこんな感じ。

2009年6月16日火曜日

ビムマスターヤマト 完結編

『ビムマスターヤマト・完結編』

絵手田「こんにちは、月刊テキストエディタの絵手田(えでた)です。お疲れ様です」

Vim野「え、絵手田さん?」

絵手田「今日から僕がビムマスターヤマトの担当になりました。よろしくおねがいします」

Vim野「え、あの、小島さんは」

絵手田「亡くなりました」

Vim野「嘘ォーーーっっっ!?」

Vim野「な、なんで……」

絵手田「実は初めて出来た彼女に初デートの前に振られたようで」

Vim野「ええー、それで自ら命を」

絵手田「いえ、ショック死です」

Vim野「ショック死ィィィィ!」

絵手田「なんか仕事中に彼女から別れのメールがきて、」

小島「ありえないんだぜ!」

絵手田「と、叫んでバタンとぶっ倒れました」

Vim野「……最期までその喋りだったんですか……」

絵手田「それで仕事の話に戻りますけど、」

絵手田「ビムマスターヤマト、来月号で最終回ですので」

Vim野「うそぉぉぉっっ!??」

絵手田「悪く言えば打ち切りです」

Vim野「わざわざ悪くいわないでください」

絵手田「元々あまり人気がなかったんですけど、今月号ではブッチギリの不人気だったんですよ」

絵手田「どっこいEmacs君よりも人気なかったです」

Vim野「マジっすか!」

Vim野「でも急に最終回と言われても困りますよ」

Vim野「僕の漫画、やっと盛り上がってきたところなのに……」

Vim野「Vim四天王とか出てきて」

絵手田「戦いはこれからも続く――みたいな終わりかたでいいじゃないですか」

Vim野「そういう終わりかたってよくありますけど、」

Vim野「僕の漫画の場合、敵のボスのカナ神に主人公のプラグインがgithub上でforkされているじゃないですか」

Vim野「しかもドキュメントは英文だけで、地獄のような大幅改造を強いられているんですよ」

絵手田「どっこいEmacs君と被ってますね」

Vim野「いや、ぜんぜん被ってないですよ」

Vim野「とにかくそんな訳で、カナ神を倒さないとスッキリしないというか」

絵手田「そうですねぇ」

Vim野「しかもそのためには色々と条件があって、」

Vim野「カナ神のいるVim魔城へ行くにはVim四天王を全員倒さなくちゃいけないし、」

Vim野「カナ神を倒すには弱点である『Kinesis keyboard』が必要だし……」

Vim野「しかも今戦っている四天王のショウゴは、『THE・補完』と言われるぐらい妙に怠け者で、十回新しい補完技を見せないと死なないんですよ」

絵手田「なんでそんな設定に」

Vim野「十話ぐらい引っ張ろうと思って……」

Vim野「あと主人公のVimに、非同期処理ができることを第一話からほのめかせているんですけど、これどうしましょう」

絵手田「さぁ……まぁ、うまくまとめてください」

Vim野「はぁ……」

Vim野「(新しい担当、なんか冷たい)」

Vim野「で、そのページは何ページもらえるんですか」

絵手田「三ページでおねがいします」

Vim野「うそぉ~~~~~~~~~~~~っっっ!!」

Vim野「なんで僕そんなに酷い扱いなんですか」

絵手田「ほんと人気なくてーー」

Vim野「四コマ漫画のどっこいEmacs君だって毎回四ページあるのにッ」

絵手田「どっこいEmacs君も次回で最終回です」

Vim野「え、そうなんですか」

Vim野「Emacs君の最終回は何ページなんですか」

絵手田「四ページですけど」

Vim野「ちくしょおぉぉぉぉぉォォォッッッ!!!」

Vim野「も、もうっ、月刊テキストエディタでは描きませんからねっ」

絵手田「はい」


※:ついカッとなってやった。反省はしていない。

2009年6月15日月曜日

ビムマスターヤマト 最終話「すべてを終わらせるとき」

元ネタ

最終話 希望を胸に すべてを終わらせる時…! V・I・M第1巻は、発売未定です。 Vim野カケラ

ヤマト「くらえショウゴ! 新必殺キーワード補完斬!」

ショウゴ「さあ来いヤマトオオ! オレは実は一回補完されただけで死ぬぞオオ!」

(<C-p>)

ショウゴ「グアアアア! こ、この『THE・補完』と呼ばれる四天王のショウゴが……。こんな小僧に……バ……バカなアアアア」

(dddddd)

シンカ「ショウゴがやられたようだな……」

ユーケー「ククク……奴はVim四天王の中でも最弱……」

ウジヒサ「人間ごときに負けるとはVim界の面汚しよ……」

ヤマト「くらえええ!」

(ズサ)

3人「グアアアアアアア」

ヤマト「やった……ついに四天王を倒したぞ……これでVim神のいるVim魔城の扉が開かれる!!」

カナ「よく来たなビムマスターヤマト……待っていたぞ……」

(ギイイイイイイ)

ヤマト「こ、ここがVim魔城だったのか……! 感じる…カナの戦闘力を…」

カナ「ヤマトよ……戦う前に一つ言っておくことがある。お前は私を倒すのに『Kinesis keyboard』が必要だと思っているようだが……別になくても倒せる」

ヤマト「な 何だって!?」

カナ「そしてお前のプラグインはバグが多かったので修正してpull requestを送っておいた あとは私を倒すだけだなクックック……」

(ゴゴゴゴ)

ヤマト「フ……上等だ……オレも一つ言っておくことがある。Vimで非同期処理は不可能な気がしていたが別にそんなことはなかったぜ!

カナ「そうか」

ヤマト「ウオオオいくぞオオオ!」

カナ「さあ来いヤマト!」

ヤマトの勇気がVim界を救うと信じて……! ご愛読ありがとうございました!


※:この物語はフィクションです。ujihisaさんの投稿を一部アレンジしています。
登場人物の名前をどこかで見たような気がしても、気にしてはいけません。

neocomplcache Ver.2.60 vimshell Ver.5.14

neocomplcacheを久しぶりにバージョンアップしました。
http://github.com/Shougo/neocomplcache/tree/v2.60
キャッシュされた補完候補が削除されてしまう深刻なバグが修正されているので、アップデートするべきです。結構前からこのバグは存在していたはずですが、なぜ今まで気づかなかったのだろう……。ついでにファイル名補完も見やすくなっています。

vimshell Ver.5.14をリリースしました。
ただし、まだリダイレクションは実装されていないので、人柱になりたい人のみ使ってみてください。
http://github.com/Shougo/vimshell/tree/v5.14
Insert modeでを押したときに使えるコマンド補完がかなり進化していて、
内部コマンドやエイリアス、外部コマンドが補完できます。
もちろん非同期実行を有効にすれば、Windowsでワンライナーの世界を堪能できます。

2009年6月11日木曜日

vimshell 開発順調です。

現在このブログの更新がかなり滞っていますが、vimshellの開発は続いています。
特に私が毎日のように使用することとなったので、これからどんどん機能が追加されていくことでしょう。

今開発中のvimshellはこんな感じ。Windowsでもワンライナーができるようになりました。
クオートやワイルドカードを解釈するようになりました。
リダイレクションが実装されれば、開発版としてgithubに上げる予定です。

2009年5月25日月曜日

neocomplcacheとvimshellの更新

neocomplcacheとvimshellが同時にバージョンアップしました。
http://github.com/Shougo/neocomplcache/tree/v2.56
http://github.com/Shougo/vimshell/tree/v5.11

neocomplcacheの改良点はファイル名補完を自前実装したことです。
詳しくはpresenを参照して欲しいのですが、Quick Matchや-によるワイルドカードが動作します。しかも、ちらつきません。
もとはというと、vimshellで自動補完するために実装しました。



vimshellの改良点は、presenを修正したのと、iexeコマンドや&によるバックグラウンド実行に対応したことです。まだ不安定ですが、"iexe irb&"のようにして実行することで、インタプリタをVim内で動作させることが出来ます。
この新機能を使用するには、proc.dll(Windowsの場合。vimprocに付属)もしくはproc.so(MacやLinuxの場合。vimprocのソースをコンパイルする必要があります)をautoloadディレクトリにインストールしておく必要があります。
ちなみに、neocomplcacheの新しいファイル名補完にも対応しました。neocomplcacheを有効化していれば、でファイル名補完が呼び出せます。

それでは良いVim lifeをお過ごしください。
Happy Vimming!

2009年5月19日火曜日

vimshellが非同期実行できるようになった

vimshellがvimshのように、非同期実行できるようになりました。
実装が適当でバグだらけなので、まだリリースできそうにはありませんが、これで:shellを使わなくても、
irbやpythonコマンドを実行できます。

証拠写真はこちら。

neocomplcache Ver.2.55

neocomplcache Ver.2.55をgithubにアップロードしました。
http://github.com/Shougo/neocomplcache/tree/v2.55
今回はキャッシュをg:NeoComplCache_TemporaryDirに書き出すようになってます。
デフォルトでは'~/.neocon'です。
よって、二回目の読み込みは圧倒的に高速化します。
ヘルプやpresenも更新しました。ただし、プラグインマニュアルはまだ工事中です。

バグがあるかもしれないので、問題があったらお知らせください。

2009年5月18日月曜日

neocomplcache Ver.2.52

さすがに三週間も放置しているわけにはいかないので更新します。

本日neocomplcache Ver.2.52をリリースしました。
今回は久しぶりの安定版なので、githubとvim.orgの両方においてあります。
http://github.com/Shougo/neocomplcache/tree/v2.52
http://www.vim.org/scripts/script.php?script_id=2620

Ver.2.51->Ver.2.52の変更点は、ほぼバグ修正なので特筆すべきことはありません。
Ver.2.5xを使っている人はアップデートを推奨します。

Ver.2.4x->Ver.2.5xの変更点は多岐にわたります。
具体的には、バッファを開くときにバッファ全体をキャッシュするようになりました。
以前より少し重くなりますが、常にキャッシュが100%となるので、
Vim標準のキーワード補完を呼び出す必要がなくなります。
よって、キーワード補完関連のオプションは廃止されました。

rank計算も遅延させるようになったので、大きなバッファではポップアップが出てくるのが早くなっていることでしょう。

現在はVer.2.55を開発中です。
これはキャッシュをファイルに書き出すことで、高速化を図っています。
まだ完全には安定していないのですが、もうすぐgithubに上げます。
リリースされれば、まさしく「究極の自動補完」となることでしょう。

今後はドキュメントの充実を図っていきたいです。
特にプラグイン作成マニュアルや英語マニュアルが急務です。
最近外国の方のwatcherが増えてきているので、そこは何とかしないといけません。

2009年4月30日木曜日

vimprocを使ってみた

現在最高のシェル環境を目指してvimshellを作っているのだが、大きな問題として非同期実行が出来ないということがある。
他のプラグインでは、外部言語インタフェースを用いている。
しかしそれでは環境が限定されてしまう。
そこで、kanaさんより教えてもらい、vimprocというものを使ってみた。

内部でdllを呼び出しているらしく、Windowsではautoloadにコピーすることでそのまま使え、
*nixではコンパイルすれば使えるらしい。

testプログラムが動くことを確認したため、vimshellのiexe内部コマンドに実装してみた。
うまく動いている。

さて、あとはどう非同期に実行させようかな。
autocmdを使うべきだろうが、なかなか簡単にはいかない。

2009年4月27日月曜日

neocomplcacheをアップロードしました。

ついにneocomplcachewww.vim.orgにアップロードしました。
これで私もVimScript作者の仲間入りです。
まだ説明も適当で、かなり投げやりな感じですが、これから少しずつ増やしていく予定です。

http://www.vim.org/scripts/script.php?script_id=2620

neocomplcacheとはautocomplpopを参考に、究極の自動補完を目指して作成したプラグインです。機能は豊富で、auto-complete.elのように、プラグインによる拡張にも対応しています。
スクリーンショットは次のようになります。




このスクリーンショットでは、endというカーソル前のキーワードによって絞り込みを行っています。



これはスニペット補完です。snipMate風のスニペットが使用できます。

他にも多数の機能があります。このブログでも少しずつ紹介していく予定です。
詳しくはpresen/neocomplcache.txtを読んでください。

2009年4月24日金曜日

ブログ始めました

ブログを始めてみました。
現在neocomplcacheとvimshellというプラグインの開発で忙しいので、
多分Vimのことが中心になると思います。読者が増えるといいな。
目標は一週間に一度は記事を書くこと。