
VimとAutoHotkeyのすゝめ
こんにちは、シャアと申します。ナビタイムジャパンでバス時刻表データの管理を担当しています。
最近私が少しずつ始めたVimとAutoHotkeyについて「何が便利なのか」、またVimについて「なぜ多くの人に好まれているか」を、お話ししたいと思います。
当社noteで同僚が執筆したVimの記事は過去にもありますので、良ければそちらも併せてご覧ください。
Vimとは?
Vimはターミナルで利用できるテキストエディタです。
ただ今回言いたいのはわざわざターミナルを開いてそのうえで編集しよう、というものではありません。VimはVSCodeやJetBrains製品であれば拡張機能として使うことができます。また完全に慣れてからでなくても、通常操作と簡単に切り替えることができます。
モード切替とコマンド
Vimを起動したときの基本モードは「ノーマルモード」と呼ばれます。もう一つの主なモードは「挿入モード」です。この二つのざっくりした特徴は以下の通りです。
ノーマルモード
いろいろたくさんあるコマンドが打てる!
挿入モード
コマンドが打てない代わりに、通常の入力ができる。
Vimはたくさんのコマンドからなる操作により、テキスト編集をキーボードだけで素早く行うことに長けています。

(表示されているキーが英字キーボード仕様なので異なる部分があります)
マウスを使わずに操作することで、キーボードのホームポジションを終始見失うことがありません。このホームポジションへの執着もVimの大事な要素の一つです。
AutoHotkeyとは?
ホームポジションから指が離れなくなった人のために
コーディングをしているとクオーテーションを多用すると思うのですが、これが若干ホームポジションから遠くShiftと同時押しであるため、指が頻繁に遠征に出ることになります。
一方Vimでもモード切替のためにESCキーを多用します。これも遠いです。せっかくVimによってキーボードからほとんど手を放さずにコーディングできるようになったので、もう少し楽をするためにキーをリマップするという手があります。
ここで使うのがAutoHotkeyです。AutoHotkeyにはあるキーの挙動をほかのキーに置き換える機能があります。ただしAutoHotkeyそのものはWindowsでしか利用できないため、Macではほかのアプリケーションをご利用ください。
使いたくないキーと使わないキー
ホームポジションから遠いキーや同時押しを要求される入力は、使う頻度が高いキーほど指への負担になるし、作業効率も低下します。
一番わかりやすいのが前述したESCキーです。Vimを使い始める以前は全然押しなれないので指が迷子になっていました。これが使いたくないキーです。
一方とても押しやすい割にほとんど押したことがないキーもあります。「無変換」キーです。これが使わないキーです。
たとえば無変換キーの挙動をESCと同じにしてしまうことで、Vimを使う際の指の動きをかなり無理なく行えるようになります。無効化したセミコロンを押した後に、他のキーを押すと挙動が変わる2段階の設定を入れることもできます。(じゃあセミコロンはどうやって、、となりますが、 これは現状エディターの補完に頼ってます)

なぜVimには熱狂的なファンがいるのか
Vimで有名な本に「実践Vim 思考のスピードで編集しよう!」というものがありますが、Vimの良さはこのタイトルに読み取れるような気がしています。
コーディングをしている最中はじっと考え込むことよりも書いては壊して、また書いてはもっといい方法が思いついて壊してということが多い気がします。頭の中だけで考えていても、メモ帳に書き起こしても、実際に実装し始めると考慮漏れや言語使用に影響されて方向性が変わっていくことがあります。(少なくとも私は)
Vimという機能はこのビルド&スクラップを早く、淀みなく繰り返すためにとても有用であり、だからこそたくさんのファンがいるのだと、そう感じました。
実践のすゝめ
導入でお話しした通りVimは普段使っている皆さんのエディタに拡張機能として加えられることが多いです。そもそもモード切替して使うことが前提の機能なので、これまでの編集方法にいくつかの便利な機能が追加されると思って使ってみていただけるといいのかな、と思います。
VimやAutoHotkeyの魅力が少しでも伝わっていれば幸いです。
いくつかコマンドを覚えるだけでも十分便利さはありますので、気になった方はぜひ。