🐥

エンジニア5年目になった今、1年目に行って最も良かったと思うこと

2024/06/26に公開

結論

Vim を使い始めたことです。
私はいわゆる Vim に取り憑かれた Vimmer ではないのでご安心ください。
Vim を多少使える程度のライト層です。

Vim とは?

エディタです。(Vi という UNIX のエディタの強化版)
詳しく知らなくても、「なんか強そうでとっつきにくそうなエディタ」のイメージを持っている方は多いのではないでしょうか。

Vim is a greatly improved version of the good old UNIX editor Vi. Many new features have been added: multi-level undo, syntax highlighting, command line history, on-line help, spell checking, filename completion, block operations, script language, etc. There is also a Graphical User Interface (GUI) available. Still, Vi compatibility is maintained, those who have Vi "in the fingers" will feel at home. See runtime/doc/vi_diff.txt for differences with Vi.

Vim

何がそんなに良いの?

早い・強い・かっこいい、以上です。

早さ

まず、作業効率が飛躍的に上がります。
Vim では基本的にキーボードから手を離しません。離したら負けです。

今まで、手をキーボードからマウスに移動させ、マウスで操作を行い、マウスからキーボードまで手を戻す時間について、考えたことはありますか?
その一連の動作をどの頻度で繰り返していますか?

たとえ1秒でも、積もり積もれば相当な時間になります。

また、以下のような実装でよくある操作を一瞬で行えます。(注1)

  • ' で囲まれている文字列や HTML タグで囲まれている要素を削除する
  • 文字列を囲んでいる "{'[ 等に変換する
  • 特定の範囲の文字列を大文字・小文字・異なる文字に変換する
  • 単語ごと・関数ごと・空行ごと・特定の文字列までの移動を何度も繰り返す

強さ

早さ でご紹介した操作は、Vim で可能な操作のほんの一部でしかありません。
なぜなら、Vim は「命令を作る形で特定の操作を実現できる」からです。

どういうことか?
ご紹介した操作はあらかじめ用意されたものではありません。
Vim で用意されているのは、変更・削除・ヤンク(コピー)・選択といった単純な操作や、カーソルの移動、対象の指定、繰り返し等の機能です。
これらを組み合わせて、様々な操作を実現できます。
e.g.

  • cit: HTML タグで囲まれている要素を削除する(注2)
  • dt)..) の1つ手前まで削除を行い、それを2回繰り返す

また、ここでは紹介しませんが、Vim 最大の強みはプラグインによる拡張性です。
Vim のさらなる派生として Neovim があります。

かっこよさ

使えるだけで強そうに見えます。

使えるようになる近道は使うこと

Vim や Neovim をそのまま使うのはハードルが高いです。
お使いのエディタや IDE で用意されている プラグインを使いましょう。
設定項目が多く戸惑うと思いますが、最初は ESC のキーバインドを jj 等に変えるだけで十分です。

基本操作や概念を学ぶときは、ゴリラ さんの記事をおすすめします。
Vim の基本操作を覚えて最低限使えるようになるまで、そんなに時間は掛かりませんよ。(多分)

https://knowledge.sakura.ad.jp/21687/

あとがき

また、Vim を使うことの副次的効果として、「キーボードから手を離さない」という思想が、そのまま効率化に繋がることが言えると思います。
例えば、どんなツールでも可能な限りマウスを使わないよう、ショートカットキーで完結させたくなっていきます。

Vim 最強!
閲覧いただきありがとうございました。
騙されたと思って使ってみてください。

注1:Vim のプラグインの機能もここでは Vim の機能としています
注2:モードについては触れません

Discussion