17
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Vim2Advent Calendar 2019

Day 7

たくさんあるVimエミュレーション

Last updated at Posted at 2019-12-06

この記事はVim2 Advent Calendar 2019の7日目の記事です。

みなさんはVimエミュレーションは使っていますか?

Vimは使っているけれどVimエミュレーションは使っていない人もいれば、
Vimは使っていないけれどVimエミュレーションは使っている人もいる。
そんなVimエミュレーションですが、現在では多くのブラウザ、テキストエディタ、IDEで提供されるようになっており、
VimエミュレーションのおかげでVimの操作性を他のソフトウェアでも享受できるようになっています。

もし、Vimの外でVimのキーバインドが使えたらマウスを使わずにキーボードだけで操作できるのではないか、
もし、このテキストエディタの機能(マルチカーソルなど)と一緒にVimの機能が使えたらすごい編集ができるのではないか、
もし、この開発効率のいいIDEを使いつつVimのキーバインドも使えたならすごい快適なのではないだろうか、
そんなことを思ったことのある人は少なくないと思います。

Vimエミュレーションはそんなことを実現できたり…できなかったり…という感じなのですが、
この記事ではそんなVimエミュレーションについて紹介します。

Vimエミュレーションとは何か

Vimエミュレーションは何かを一言で表すならば、Vimのキーバインドや概念を再現するもの、といったところでしょうか。
hjklでの上下左右の移動から始まり、dでの切り取り、pでの貼り付け、ノーマルモードや挿入モードといったモードの概念、マクロによる操作のリピート、テキストオブジェクト、など、各VimエミュレーションによってVimの機能をどれぐらい再現しているか、再現できているかは異なりますが、いずれも実現できる範囲でVimの機能を再現しています。

だいたいのVimエミュレーションではhjklをはじめとしたキーでカーソル移動、スクロールができるようになり、ノーマルモードによる素早いテキスト編集ができるようになります。全てのキーがショートカットキーになったような状態になるため、いつもとはまた違った操作性を得ることができます。

しかし、Vimエミュレーションがもたらすものは必ずしもメリットばかりという訳でもありません。
Vimを使っている人が必ずしもVimエミュレーションを使っているとは限らないのには理由があります。
最初は気にしないで大丈夫なのですが、次のようなメリット、デメリットがあります。

メリット

主に4つ。

  1. キーボードで完結する操作が増える。
  • マウス、タッチパッドの利用頻度が減るためキーボードを触っている時間が増えます。また、矢印キーの利用頻度が減るためホームポジションを維持できる時間も増えます。
  • 環境によってはマウスを出しづらかったりするのでそういう場所でありがたいです。
  1. プレーンテキスト編集速度が向上する。
  • なんだかんだいってVimはプレーンテキストの編集が得意なのでVimの編集機能の再現度が高ければプレーンテキストの編集速度が上がります。
  • 場面によってはVimエミュレーション無しのほうが速く編集できる場合もあります。また、フォーマット、リファクタリング等は専用のツールやIDEに任せたほうがいいでしょう。
  1. 操作の快適性が向上する。
  • ほぼ全ての操作がショートカット相当になります。Vimを使っている人は多かれ少なかれVimの快適性を目当てにVimを使っていますが、Vimエミュレーションでも似た快適性を得られます。
  1. Vimへの抵抗感が減る。
  • Vimへの移行がしやすくなるでしょう。また、例えばもしLinuxサーバ等に入って作業をする場合にも、Linuxサーバには確実にVimが入っているので、ファイル編集等への抵抗感が減ります。

デメリット

主に4つ。別でブラウザ特有のものが1つ。

  1. Vimの機能を100%再現しているわけではない。
  • Vimの機能を知っていれば知っているほど、Vimにはあったこれが無い…となります。無かったからといって詰むことはないですが、快適性に影響します。
  • とはいえ、使い続けると慣れてきます。個人差はありますが…。
  1. 既存のショートカットキーを上書きする。
  • 既存のショートカットキーを上書きするため、既存の機能へのアクセスがしづらくなります。IDEでは特に編集以外のショートカットも多いので影響が大きいです。
  • これはVimエミュレーションの作り次第というか、既存の機能との共存をどのようにしているか次第ではあります。
  1. 日本語入力に苦労する。
  • Vimと同じで最初は日本語入力に苦労するはずです。Vimのモード(ノーマル/挿入)と日本語入力のモード(英数/ひらがな)の二つのモードが別々にあるので確実に混乱することでしょう。
  • これはVimと同様で慣れます(モード切り替えにはパターンがあるので)。それでも日本語多めだと編集速度は落ちますが。
  1. Vimから離れづらくなる。
  • Vim特有の快適性みたいなものがあって、Vimエミュレーションにも似た快適性があるんですが、この快適性が得られない場面で辛くなります。私はこれがあってVimから離れられそうにありません。CapsLockキーのCtrlキー化などと似た感じですね。
  1. (ブラウザ特有) Hit-a-hintで事故をする。
  • ブラウザ向けのVimエミュレーションには大体Hit-a-hintといって特定のキーを押すと、各リンクにアルファベットが振られそのアルファベットを入力するとそのリンクに飛べる機能があるのですが、これが使っていてときどき事故します。
  • 例えば誤フォローしたりとか、誤いいねしたりとか。事故するときは事故します。

使うか使わないかの決め方

趣味にあっていれば使う…ぐらいでいいと思います。
Vimエミュレーションありの操作感とVimエミュレーション抜きの操作感は異なるので、
どちらがいいかとは一概に言い難いです。それに、Vimを使うという選択肢もありますしね。

もしVimを使っていなかったとしても、Vimが気になっていたら試していいと思います。
ドットインストール等のVimの入門等で紹介されている範疇の操作であればだいたい再現されているはず…です。

また、同じVimエミュレーションでもブラウザ向けのVimエミュレーションはあくまでVim風というかVimと異なる独自の操作が色々あってほぼ別物なので、ブラウザ向けのVimエミュレーションは単体で試してみて、よさそうだったら使っていいと思います。

Vimエミュレーションの一覧

さて、そんなVimエミュレーションにはどのようなものがあるのかですが、次のようなものがあります。
これらは2019年12月6日時点で1年以内に最終更新があり、確実に利用ができるVimエミュレーションの一覧になります。

Vimエミュレーションには以前からからあり今も保守されているものもあれば、
保守されなくなってしまったもの、APIの変更によりプロジェクトの終了を余儀なくされたものもあります。
そのため、一覧から外しているものもありますが、それらも込みのリストだともっと数があります。込みのリストはどこかで…。

テキストエディタ向け

テキストエディタ Vimエミュレーション
Emacs Evil
Visual Studio Code VSCodeVim
Atom vim-mode-plus
Sublime Text NeoVintageous
Sublime Six
Brackets Vimderbar

全体的に再現度が高めな気がします。マルチカーソルを併用できたりするのもいいですね。
EmacsにはVIP、Viper、といったものがあったと聞きます。そちらまでは試せていないのですがどんな感じでしょう…。Atomのvim-modeは非推奨になっていてvim-mode-plusが推奨されています。Sublime TextのVintageとVintageousはそれぞれ開発が止まっています。

IDE向け

IDE Vimエミュレーション
Visual Studio VsVim
Xcode XVim2
Eclipse Vrapper
NetBeans jVi
IntelliJ IDEA IdeaVim

いずれも長く保守されていて、このIDEならこれといえる定番なものとなっています。
変わったことといえばXcodeのXVimがXVim2になったことぐらいでしょうか。

また、リストにはありませんが、Qt CreatorにはFakeVim、MonoDevelopにはVi ModeというVimエミュレーションを有効にする機能があります

ブラウザ向け

テキストエディタ Vimエミュレーション
Firefox Vimium-FF
Vim-Vixen
Tridactyl
Surfingkeys
VVimpulation
Chrome Vimium
Surfingkeys
Safari Vimari
sVim

5年前とはリストが大きく変わっています。
FirefoxのVimエミュレーションはVimperatorやVimFxが動かせなくなり、使えるVimエミュレーションが大きく変わりました。Chromeにも以前ViChromeや、Vrome、cVimといったものがありました。SafariのVimariとsVimはMacを持ってなくて試せていないのですが今でも使える感じでしょうか…?

用途が編集ではなく、ブラウジングなので、他のVimエミュレーションとは違うのですが、
Vimのキーバインドを多く再現しており、キーボードだけで多くの操作ができるようになります。

また、Edge、Vivaldiはリストにありませんが、Edge、VivaldiではChromeの拡張をそのまま使えるため、Edge、VivaldiでもVimエミュレーションは利用できます。

その他

ソフトウェア 種類
tig Gitインターフェース
cgdb GDBインターフェース
qutebrowser ブラウザ
Vimb ブラウザ
Luakit ブラウザ
Kakoune テキストエディタ
Shiba Markdownプレビュアー
Readline ライブラリ(C)
FakeVim ライブラリ(C++(Qt))
Ace ライブラリ(JavaScript)
CodeMirror ライブラリ(JavaScript)

VimエミュレーションというよりはVimを参考にしているもの…ぐらいの感じのような気もしますが、いずれもVimが提供するキーバインドと同じキーバインドを提供しています。

これとは別に、カウントされるかは怪しいですが、
いくつかのWebサイトにはVimのキーバインドがショートカットキーになっているサービスがあります。

Webサイト ショートカット内容
Twitter jkで選択ツイートを移動、/でキーワード検索にフォーカス
TweetDeck jkで選択ツイートを移動、hlで選択列を移動、/でキーワード検索にフォーカス
BookWalker hjklでページ送り(wasdでも可)
GoogleDrive hjklで選択ファイルを移動
GoogleCalender jkで月、週、日を移動
ニコニコ静画(漫画) jkで上下スクロール
はてなブックマーク jkで選択記事を移動
GitHub jkで選択ファイルを移動
Pocket jkで選択URLを移動
Pixiv jkでページ送り(2枚以上の投稿の場合のみ)

jkでのスクロールはホームポジションを崩さずにできる操作なので、もしかしたらVimは関係ないかもしれませんが。

まとめ

Vimエミュレーションはこのようにたくさんの人が作っていています。
Vimエミュレーションが合うかどうかは人によりますが、
よければ触ってみてください。

また、もしリストに無いものがあったら是非教えてください…!

17
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?