Vimperatorの:letに思うこと

VimperatorはVimに似ているからこそ「Vim」peratorである。しかし、そのすべてが似てほしいわけではない。特に似てほしくない部分がスクリプト言語の部分である。

現状Vimperatorには:ifや:whileや:functionはない。そして、これらはVimperatorには永久に不要だと感じている。VimperatorにおけるコマンドはJavaScriptで書かれた関数へのインタフェースに留まっていてほしいからだ。つまり「:tabopenでタブを開く」その手軽さは良いが、コマンドを並べてスクリプト言語として使うようなことはしたくない、言うなればVimperatorスクリプトなどほしくないということだ。なぜなら、そんなものはなくとも、Vimperatorには既にJavaScriptという強力な言語が備わっているからだ。

私がこんなことを書くのは「そういった方向に進んでいるのではないか」と思わせるような、不要なコマンドが既に存在するからである。それが:letである。

Vimperatorにおける:letの用途が私には分からない。

Vimであれば:letは必須の機能である。Vimスクリプトにはオプションの追加ができないため、プラグイン用のオプションを提供したければ、代わりに変数(:let)を使うしかない。本来の用途としての変数でもまた:letは必要である。

しかしVimperatorでは違う。JavaScriptを使えばオプションの追加ができるし、JavaScriptの変数が使用できるため:letは不要である。他にいくらでも方法があるのだ。

VimperatorのプラグインがVimperatorスクリプトで書かれているなら話は別だが、実際はJavaScriptで書かれている。オプションの追加も変数の定義も、JavaScriptで行うなら労力はほとんど変わらない。それならば、どこに:letを選択する必要があるだろうか。

利用者側から見ても:setと:letとが分けられている必要はないだろう。プラグイン側から「'option1'と'option2'とを追加する」と通知されていれば、それに対応する:setを実行すればいい。ここに:letである必要などない。プラグインはVimperatorの一部として扱えばいい。そのように扱えるだけの拡張性をVimperatorは持っているのだ。

Vimの悪しき部分まで似せる必要はないと私は思う。VimperatorはVimのクローンではなく、Vimの長所を生かした独自のWebブラウザ拡張になることを目指すべきなのだ。