Help us understand the problem. What is going on with this article?

ブラウザのVim体験向上施策について

More than 3 years have passed since last update.

この記事は、Vim Advent Calendar 2015 17日目の記事です。
(なんとか12/18になる3分前にpostできました:sweat_drops:

皆さんはキーボードで文字を入力する際に、どのアプリケーションを使う機会が多いでしょうか。

自分の場合だと、Vim(MacVim含む)、Android Studio、WebStorm、ブラウザ(Chrome)等が多いです。
私は、この中の「ブラウザ」に対して常に不満を持っていました。
なぜなら、それなりの長さの文章を書く機会が多いにもかかわらず、ブラウザでは満足のいくVim体験ができなかったからです。

現状のブラウザにおけるVim体験とその改善施策

ブラウザと上で挙げた私が良く使用するアプリケーションのVim体験を比較してみます。
Vimは勿論Vimオリジナルなので、最高のVim体験が可能です。
IntelliJ IDEAをベースとするAndroid StudioやWebStromには、IdeaVimという素晴らしいプラグインが存在しており、Vim(オリジナル)とまではいかないまでも、少なくとも自分が満足できる程には良いVim体験を提供してくれています。

では、ブラウザの場合はどうでしょうか。
自分が探した限りだと、満足のいく方法を見つけることができませんでした、、

この状況を何とかしようと考えた結果、以下の二つのVimプラグインを作るに至りました。

ここからの内容について

ここから作ったVimプラグインの紹介をしていきますが、どちらのプラグインもJXAに依存しているため、Macでしか動作しません。
(Macユーザー以外の方々すみません:bow:
(私は別に熱狂的なMacユーザーというわけではありませんが、偶然自分のマシン(私物/会社)がMacだったため、手っ取り早くやりたいことが実現できそうなJXAを使用しました:octocat:

vim2browser.vim

vim2browserは、Vimとブラウザ(現状Chromeのみ対応)で、テキストを相互に送り合うためのプラグインです。
インストールすると、以下のようにVimで編集中のテキストを、ブラウザのテキスト編集エリアに送ることが可能となります。
ezgif-2110046198_1.gif

逆にブラウザで編集中のテキストをVimに送ることもできます。
vimqiita2.gif

Vimで範囲選択したテキストをブラウザに送ることもできます。
vimqiita3-compressor.gif

keysender.vim

keysenderは、Vimから対象のアプリケーションに対して、キーイベントを送るためのプラグインです。
例えば、先ほど紹介したvim2browserと、Chromeの拡張機能であるVimiumMarkdown Hereを組み合わせると、Vimで入力したテキストを、Evernoteに送ったり、Markdownプレビュー切り替えや、ブラウザのスクロールを、Vimから実行できるようになります。

ex1. Evernote(vim2browserでテキストを送る + keysenderでMarkdown Here実行)
vimqiita4-compressor.gif

ex2. GitHub Wiki(keysenderでVimium用のキーイベントを送ってプレビュー切り替えたりスクロールさせたり)
ezgif-174280194_5.gif

ex3. 入力フォーム(vim2browserでテキストを送る + keysenderでTabキー入力)
ezgif-4204234001_7.gif

ex4. keysenderとVimiumを組み合わせてブラウジング
ezgif-3048377906_6.gif

なんとなくブラウザとVimの距離が近づいてきたような気もします。

keysenderはChrome以外のアプリケーションにもキーイベントを送ることができるので、以下の様なことも可能になります。

ex1. Vimを使いながらWunderlistのタスクを完了状態にする
vimqiita8-compressor.gif

ex2. Vimを使いながら電卓で計算する
vimqiita9.gif

Vimの可能性が色々と広がりそうな気もします。

さいごに

今回は、私の考えるブラウザのVim体験向上施策について紹介させていただきました。
今回作ったプラグインが、皆様のVim体験向上にも貢献できれば幸いです。
本日期限ぎりぎりに公開したということもあり、まだ安定して動作しないかもですが、自分でも使い込んで改善していきたいと思っているので、よろしくお願いします:bow:

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした