vimを使いたいと思ったらまずは普段のエディタにvim設定を入れると良い
vimを使ってみたがどうもしっくりこない、良さがわからないが分かりたい。そんな人向けの記事です。
いきなり全部をvimにする前にキーボードショートカットを増やす感覚でvimを入れる
vimやnvimから初めてもちろん良いですが、慣れたエディタがある場合、普段使えていたショートカットが使えなくなったり、vimの操作感に慣れず目に見えて効率が落ちてしまうと、vimをつかうのが嫌になってくるものです。
多くのエディタにはvim用の拡張が用意されています。まずはそれを利用し、vimの便利なところを普段のエディタで体感していく方法をお勧めします。

こういった拡張を入れると操作のキーバインドが大体vimになります。vimに普段のキーバーインドを取られてしまうことも多々あるため、元々よく使っていたものに関してはvim側のキーバインドを無効化するのが良いです。
無効化の設定はAIに聞くのが早いです。vsocdeやcursorならsettings.jsonに下記のような設定を書いていく感じになります。
"vim.handleKeys": {
"<C-f>": false,
}
困ったらinsert
iを押せばinsertモードに入っていつも通り打てます。escape、ctrl + c、ctrl + [のどれかでinsertモードからnormalモードに戻れます。 困ったら、escape連打してnormalモードに戻り、iを押してinsertに入れば良いです。
慣れたら別のinsertも覚えると便利
- o: カーソル位置の下行にinsert
- O: カーソル位置の上行にinsert
- i: カーソル位置の前にinsert
- I: カーソル位置から先頭に移動してinsert
- a: カーソル位置の後ろにinsert
- A: カーソル位置の末尾にinsert
キーボードから手を離さないで出来ることを増やす
コーディングではまず、定義ジャンプとファイル移動のショートカットを使うと便利に感じると思います。
- 関数にカーソルを持っていく -> gd を押す (定義ジャンプ)
- ctrl + o を押す (元のファイルに戻る)
- ctrl + i を押す (ctrl + o の反対)
hjklを使って画面を移動して、gdやctrl + oでファイルをビュンビュン移動すると楽しさが感じられるのではと思います。
カーソルを大きく動かす
hjklの移動に慣れてくると、移動する距離を1文字より大きく動かしたくなるはずです。
- gg (ファイル先頭)
- shift + g (ファイル末尾)
- w (1単語単位で移動), b はwの逆
- ctrl + u (上)、ctrl + d (下)
この辺りを使って上下に大きく移動できます。次に横移動はfかtを使います (左に飛ぶ場合はshift + f, shift + t)。
- f -> 飛びたい文字 (“や]などを見つける)
fは該当の文字までカーソルが移動しtは1個前に移動します
範囲選択する
範囲選択をします。これが慣れるとコピーのためにマウスでドラッグするといった操作から解放されます。
{
"users": [
{
"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"name": "Alice",
"age": 30
},
{
"id": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
"name": "Bob",
"age": 25
}
]
}
例えばこのこういったjsonがあるときに次のような操作を覚えると便利です
idのコピー
“f47ac10b-58cc-4372-a567-0e02b2c3d479”
“の上にカーソルを移動し、yi” 通すと""の中のidをコピーできます
削除
idのコピーの手順で、yからdにコマンドを帰ると""内を削除できます。di”
users: [] にしたい場合、[]内でdi[ で消せます。1つのobjectを削除したい場合は、da{です。
普段マウスで範囲選択していた部分を少しずつキー操作で大体可能になってくると、効率的で楽しくなります。
ゆるく使いつつ、慣れたら新しいショートカットを使う
上記のようにこれキーボード操作で完結したいなと思う作業が日常で出てきたら、コマンドを調べてみると大体できます。自身が良く使う操作を調べて、使っていればそのうち覚えるので、そうしたら次にちょっと頻度の低いコマンドを使ってみるといった形で使っていくのがわたしはやりやすかったです。
ゆるく使いつつ、気が向いたらyoutubeで他の人のvim操作をみたり、職場にvim使いがいたらペアプロをしてみると新たな発見があり面白いと思います。