すべてがVimになる

Vim Advent Calendar 2018 その2の8日目の記事です。

こんにちは@mrsekutです。

新しいIDEやサイトに備え付けのエディタを触る機会があったとき、まず最初に「vimのキーバインドあるんかこれ?」とダメ元で設定を覗きに行き、あれば「有能!!」とツッコムような人のための記事です。

tl;dr

  • Karabinerでどこでもvimキーバインド
  • Vimiumでchrome上でvimっぽい操作
  • VSCodeVimでVSCode上でvimを使う
  • おまけ

はじまり

そろそろVimキーバインドの効いたエディタでの操作に慣れてきた僕。

ある日、メモを取るためにEvernote、課題を提出するためにWordを開いたときに、毎度毎度マウスに手を伸ばさないといけないことを思い出し、「わろすw」ってなりました。

vim以外でもvimしたい!!
なんか良い方法はないんけ!
と、模索した結果行き着いたものを紹介します。

あと、最初に断っておきますが僕はガチビマーではありません。
VSCode上でvimキーバインドを使う人です。

あと、今回の記事はてんこもりもりもりおうがいなので、部分的にでも参考になれば幸いです。

Karabiner

【Link】https://pqrs.org/osx/karabiner/

vimmer御用達のKarabinerです。
少し前までは、High Sierraに対応していなかったのですが、いつの間にか使えるようになっていました。

これはVimキーバインド関係なく、キーの配置などをカスタマイズできるめちゃくちゃ便利なツールです。

例えば、忌まわしきCapsキーをCtrlキーにしたり、USキーの場合は、左⌘を「半角に切り替え」、右⌘を「全角に切り替え」にしたりできます。

その延長で、Ctrlとh、j、k、lキーでカーソル移動できたり、vでビジュアルモード、w、bで単語単位でカーソル移動などvimっぽい動きができます。

ですので、vim以外で文字を入力できるところ、例えばこのブログを書いているwordpress上や、メール、Word、検索フォームなどなど、文字入力できるところであればどこでもvim感覚でカーソルを移動できるようになります。

使う

Karabinerのサイトからダウンロードできます。

基本的には、設定を開き「Simple Modifications」からキーの入れ替えなどができます。

面白いのは、以下の画像のように選択すると、公開されている設定をimportして使うことができる点です。
めちゃくちゃ沢山の設定があるのでお好きなものを選択してみてください。

jsonで設定ファイルを書けばオリジナルな設定もできます。

紹介しといてなんですが、僕はあまりゴリゴリにカスタマイズはしていません。
画像に載っている2つくらいです。
なにか良いのを見つけたら教えてください。

【参考】Karabiner-Elementsが大分進化してVi Modeとかまで出来る様になっていた

Vimium

【Link】Chrome ウェブストア – 拡張機能

Chromeの拡張機能です。
実は、先程のKarabinerの設定の中にもvimiumという項目があるのですが、こちらから入れた方がわかりやすいかと思います。

これを入れるとChromeでブラウジングするときに、vimっぽいキーでブラウザ操作することができるようになります。

結構いろいろなことができるのですが、利用頻度の高いものをすこーし紹介します。

  • f: EasyMotionっぽくリンクを踏める
  • t: 新しいタブを開く
  • x: タブを閉じる
  • shift-j,k: 隣のタブへ移動(gtでも可)
  • j,k: スクロール
  • /: ページ内検索
  • yy: 開いているページのURLをクリップボードにコピー

挙げるとキリがないのでこのへんで止めておきます。
?でキー一覧が見れるので、少しずつ覚えていくと便利に操作できるようになります。

あ、もう少しだけ。
最近よく使うのは、例えば技術系のブログなどを読んでいて知らない単語が出てきたときに、その単語をコピーし、Pを打鍵すると、新しいタブで検索してくれます。
これが地味に便利です。

新しいタブを開く→検索フォームにペーストする→エンターで検索する
の操作がキーを一発押すだけで完了します。はやい!

詳しく解説されている記事がいくつかあるのでそちらを御覧ください。

【参考】Chromeをvimライクに使えるようにするvimium – Qiita

他のブラウザはよく知りませんが、ちょちょいとググったところFireFoxでも同じようなのがありましたので、調べてみてください。

VScodeVim

【Link】https://github.com/VSCodeVim/Vim

最近AtomからVSCode移行しました。
VSCodeをお使いの方はご存知かと思いますが、VSCode上でvimキーバインドで操作できるプラグインがあります。

基本的なキーはもちろんのこと、有名な外部プラグインなども一部入っていたりします。

qのマクロや、mのマーキングや、\でeasymotionも使えたり、結構いろいろできます。

全ての機能はドキュメントに書かれてありますが、良い感じのものを一部紹介します。

キーの設定

⌘K⌘Sでショートカットキーの設定ができるので、まずはescをjjに割り当てるのはどうでしょうか。
こうすることで、楽にノーマルモードに移ることができます。

以下のようにして設定できます。

もう一つ良い感じのを紹介しておきます。

VSCodeでは⌘K⌘1や⌘K⌘2とかでクラスや関数などのスコープを折りたたむ機能があるのですが、折りたたんだ上でjでカーソルを下げていくと意図せず開いてしまいます。

これを「vim.foldfix: true」と設定すると、開かなくなって便利です。

vim-easymotion

【参考】: https://github.com/VSCodeVim/Vim#vim-easymotion

画面上の任意の場所にジャンプできるeasymotionも入っています。
デフォルトではfalseになっているので、設定でtrueにしてあげます。

また、leaderキーはデフォルトでバックスラッシュ「\」になってるので、お好みでspaceキーなどに変えてあげると良いかもです。

また、飛び先の目印として表示される文字が小さすぎて読めなかったので、これも設定しました。

以下のように飛び先を表示してくれるので、そのキーを確認して打鍵することでジャンプすることができます。

詳細な飛び方は上のリンクのドキュメントを参考にしてみてください。

vim-surround

【参考】: https://github.com/VSCodeVim/Vim#vim-surround

単語などに対して括弧を付け外しを便利に行えるvim-surroundがデフォルトで入っています。
詳細はリンク先を参考にしていただきたいのですが、少し例を紹介します。

「hoge」上のどこかにカーソルがある状態で、ysiw(と入力すると「( hoge )」のように丸括弧で囲うことができます。

同じようにして、cs({で丸括弧を中括弧に変更したり、ds{で中括弧を消したりできます。

これは丸括弧以外にも他の括弧やクォーテーションでも使え、非常に便利なので使っていきたいです。

vim-sneak

【参考】: https://github.com/VSCodeVim/Vim#vim-sneak

vim-senakもデフォルトで入っています。
ただ、デフォルトではfalseになっているので、使う場合は設定でtrueにしてあげる必要があります。

vim-sneakはfでの検索移動の強化版のような機能です。

f<char>では、カーソルのある行の次の<char>の部分へカーソルを移動してくれますね。

これに対しvim-sneakでは、s<char><char>とすることで、二文字指定での検索移動と行を跨いだ移動ができます。

詳しい使い方は以下の記事が参考になりましたので、そちらをご覧ください。

【参考】sneak.vimで高速カーソル移動 — ぺけみさお

VSCodeVim tricks

【参考】: https://github.com/VSCodeVim/Vim#-vscodevim-tricks

その他、vimプラグインの有能な機能をまとめたものがあります。
一部抜粋します。

gd

定義元へジャンプ。めっちゃ使う

af

visual modeで選択時に実行すると、選択範囲を広げてくれる。

gh

いつもならカーソルでホバーすることで見れるvscodeのhintをマウス操作なしで見ることができます。
標準モジュールの定義や型、エラーメッセージを表示してくれるあれをホームポジションから指を動かさずに見ることができます。

その他

vimガチ勢は以下の記事を参考にする良さそうです。

【参考】割と突き詰めてやったvim->vscode移行 – Qiita

おまけ

atom

少し前まではatomを使っていました。
去年のVimのAdventCalendarでは以下のような記事を書きました。

【参考】キラキラvimmerに憧れるatommerの為の環境構築 | mrsekutの備忘録

atomにも便利なvimプラグインがあるので、上の記事も参考にしてみてください。

marxico

【Link】https://marxi.co/

最近はあまり使っていないのですが、vimキーバインドを設定できるマークダウンエディタです。
Evernoteと連携できるので、メモ代わりに使えます。

KarabinarがHighSierraに対応するまで使っていましたが、最近はScrapboxなど違うツールにメモするようになったので、めっきり使わなくなってしまいました。

所感

こんな感じで快適なVimライフを送っています。
一部でも誰かの参考になれば幸いです。