🌱

尻にvimを合わせる。

2022/11/01に公開

はじめに

「尻を椅子に合わせろ」という言葉を、尊敬する先生から言われたことがあります。目の前の道具を、自分専用にカスタマイズするのではなく、標準的な仕様に対して自分が慣れて使いこなせるようになりなさい、という意味の言葉です。

ところが私は、自分自身の癖として、「カスタマイズできるものは徹底的にカスタマイズする」という行動があります。エディタについても全く同様のことが言えており、他人のvimを私が使う時には非常に苦労しますし、他人のシェルでgitを使う時にも同様に苦労します。

カスタマイズを施すことは楽しい一方で、決して両手を挙げて褒められる行動ではないときもしばしば。事実、私自身その弊害をすでに受けているので、「どんな環境でも」「どんな時でも」「常に素早くコーディングする」ということができなくなっている現在の状況は、まさにほめられたものではないでしょう。

それでも私は、このカスタマイズをやめたくない。どうしても、自分が使いやすいようにゴリゴリと音を立てて削り出す行為が、やめられないのです。

というわけで(どういうわけで?)、今回は私がvim系エディタに施しているキーバインド変更について書いていこうと思います。

この記事の方針

実際のvimでは、noremapなどを使ってキーバインドを実装していくことになりますが、今回はその実装部分にはあえて触れません。なぜなら、私が使っているのはvimであり、neovimであり、vscodeであり、そして将来的にはRustで実装されたエディタ、Zedであるためです。これらはそれぞれに実装方法が異なります。

そこで、実装という具体のレイヤーには触れず、どんな設定をという抽象的な部分の話を、つまり、作業効率を上昇させるキーバインドの考案と提案をしていくのが、本記事の趣旨です。

設定

キーバインド

normal & visual mode

割り当て 挙動
gh 行頭へ移動
j 表示行単位で一行下る
k 表示行単位で一行上る
gl 行末へ移動
ge ファイル末尾へ移動

Helix エディタというvimライクなエディタで実装されているキーバインドを移植してきます。
goto+h,lで移動できるので、普段のvimで使うような$や^よりも直感的です。
それから、特に$についてはShiftと同時押しが必要なので、ストローク数が同じでも指にかかる負担はずいぶん少ないように感じます。

insert mode

割り当て 挙動
Ctrl+p カーソルを一行上に移動
Ctrl+n カーソルを一行下に移動
Ctrl+f カーソルを右へ移動
Ctrl+b カーソルを左へ移動
Ctrl+a カーソルを行頭へ移動
Ctrl+e カーソルを行末へ移動
Ctrl+h カーソル左の文字を削除
Ctrl+d カーソル右の文字を削除
Ctrl+j, Ctrl+j insert modeからの脱出

私はvimを使いだす前に、少しだけemacsのキーバインドも使っていました。
そのため、insert mode 中だけはemacsのカーソル移動キーバインドを使えるようにしています。
また、insert modeからの脱出では基本的にjjを使うことが多いようですが、私個人が日本語入力を多用するので、それだと都合が悪いためこんな形にしました。

終わりに

全体として、「私が使いたいと思った各エディタのキーバインドをvimをベースにキメラ化した」、といった趣旨の記事でした。
個人的な備忘録のつもりで書いているので、皆様もぜひそれぞれのvimをキメラにしてみて下さい。

深い沼が、きっとあなたを待っています。

おまけ

インデント関連

インデントは必ず空白にします。タブに設定してある場合、各プラットフォームで表示状態が著しく変わってしまうのでよろしくないと考えています。
また、基本的にインデント幅は4にします。各言語によって適正とされるインデント幅は異なるので、この点に関してはそれぞれの言語ごとに設定を施すことになりますが、基本的には4です。

Discussion