その他

【新卒おめでとう】今こそおすすめするvimという選択肢

vimのアイコン 大きい「V」の下に揃えて「im」が配置されている。「Vim」の文字の背景には緑色のひし形が配置されている。 その他
この記事は約6分で読めます。

はじめに

新卒の皆さん就職おめでとうございます。

次に

早速本題へ。

エンジニアとして就職した方のほとんどはVisual Studio Code(以降 VSCode)から使い始めると思います。
コーディング便利機能が豊富、Git GUI搭載、プラグインも豊富という特徴があります。
大抵の操作をGUIで済ませることができるうえに編集可能で豊富なショートカットキーも搭載されているため、マウスで直感操作派とショートカットキーで爆速操作派のどちらにとっても受け入れやすいエディターです。
会社単位で推奨していることも多いと思います。

私はショートカットキーで爆速操作派で、もちろんVSCodeを愛用していました。
(ちなみに、vscode.devというWeb版も提供されています。スマホから利用も可能です。)
しかし、弊社に就職して数ヶ月過ごしてみていくつか不満が出てきたのです。

VSCodeへの個人的不満

就職まで私はWindowsとLinuxを併用していました。
この2つはキーの役割がほぼ共通で、ほとんどのショートカットキーも共通していました。
(実際にwindowsキーの名前が違うだけでそれ以外同じといえます。)
VSCodeのWindows版とLinux版のショートカットキーも当然のように共通でした。
そのため、日頃WindowsとLinuxを行き来しても苦はありませんでした。

しかし、就職して社用PCがmacOSであることによって、今まで身につけたショートカットキーがほとんど使えなくなってしまいました。
CtrlキーがCommandキーに置き換わるだけ、なんて甘っちょろいことはなく、同じショートカットでも使うアルファベットキーが異なることが頻発しました。

これでは快適なコーディングが実現できません。

ふと思い出したvimの存在

vim(ヴィム)とは、ターミナル上で動作する古くからあるエディタです。
初期状態のLinuxにも搭載されていることが多いです。
マウスカーソルを一切使いません。
文字入力ができるモードとコマンドを利用するモードを分けることで、アルファベットキー単体でもショートカットキーとして動作する点が特徴的です。

前述の通り、vimは初期状態のLinuxにも搭載されているエディターです。
当然、Linuxの親戚といえるmacOSでも利用できます。

そして、vimはmacOSよりも前に誕生しています。
つまり、CommandキーとCtrlキーのような差異が生まれる前からあるということであり、vimではショートカットにCommandキーを使うことはありません。
ショートカットに使われるのは、LinuxにもWindowsにもmacOSにも存在しているCtrlキーとShiftキーです。

お分かりになった方もいるかもしれません。
vimのショートカットキーVSCodeと異なりすべての環境で同じなのです。

閑話休題: vimとはじめまして

ちょっとvimを起動してみましょうか。

「ターミナル」アプリを起動して「vi」と打ち、Returnを押してみてください。
すると以下のような画面になると思います。

vimの起動画面

ここから様々なコマンドを駆使してファイルを開き、巧みに編集を行い、保存します。

開くときにファイル名を指定するとファイルを開きながら起動することもできます。

閉じるときはEscキーを押したあとに「ZZ(Shift+zを2回)」を入力します。

vimを勧める理由

私が考える、新卒の方にとってvimが得な理由を解説していきます。

使うコンピュータを選ばなくていい

プライベートでも仕事でも環境が変わろうが、エディターを統一することでコーディングに関して指で考えることが格段に減ります。
それだけで私生活でvimを利用した経験がダイレクトに仕事へ活きることになります。

加えて、今後どのコンピュータを使うことになっても(案件が変わったり転職したり様々ですが)、vimさえインストールすれば作業環境が整います。

「これから使うものが今までと変わらない方法で使える」というだけでいろいろと障壁が下がると思います。

画面がないコンピュータも扱いやすくなる

「画面がない」とは文字通りの意味ではなく、「GUIがない」という意味です。

GUI(グラフィカル・ユーザー・インターフェース)とは、マウスポインタ、ボタン、画像、動画、多様な図形やフォントなどで表現された、「見た目で伝える画面」「見た目を操作する画面」のことです。
端的に言えば、マウスカーソルや指でのタップ・スワイプで操作する画面はすべてGUIと捉えてよいでしょう。
逆に、「文字だけで伝える画面」「文字だけで操作する画面」をCUI(キャラクタ・ユーザー・インターフェース)といいます。
ターミナル(コンソール)はCUIで、前述の「画面がない=GUIがない」に当てはまります。

手元のコンピュータであれば、CUIで行うほとんどの操作を代わりにGUIで行うことができます。
しかし、CUIでしか操作できないものがあります。
それの最たる例がサーバーです。

サーバーを専門的に扱うエンジニアでないなら、当然サーバー上で作業する機会は格段に少ないです。
しかし、弊社のようにスマートフォンアプリ制作の業務でも、サーバー上でファイルを操作する機会は多少発生します。
そのとき初めての作業だとしても、GUIしか触れたことがない場合とCUIも触れたことがある場合では感触が違ってくるはずです。

現在、多くのサーバーではLinuxが使われています。
前述の通りvimはLinuxに最初から搭載されていることが多いため、サーバーにも搭載されていることが多いです。
サーバー上にしかない重要なファイルを編集するとき、VSCodeを使うのが良いとは限りません。
vimを覚えておけば難なくファイル操作が可能になります。

キーボードから手を離さなくていい

マウス操作は直感的な代わり、頻繁に行う操作や大規模な操作においては煩わしさが目立ちます。

vimは前述の通りマウスカーソルを一切使わないエディターなので、何か機能を使うために小さなボタンを押したり、目的のボタンにたどり着くためにいくつものボタン経由する必要がありません。
これは「覚えるのが大変」ともいえますが、「覚えてしまえば強力な道具」ともいえます。
なぜならどの環境でもvimはショートカットキーが変わらないからです。

極端にいえば、vimを覚えることはどのコンピュータでも同じ姿勢で作業ができるといえます。
自主勉強でも筆記テストでも使い慣れたシャープペンが使用できるようなものです。

今勧めるのは「覚えるなら今」だから

タイトルに反して、vimはマウスを使わないという特性上、上級者向けのエディターといえます。
その上、vimはターミナル上で利用するため、少なくとも他のCUI操作にも触れることになります。
現在はGUI操作が充実しているとはいえ、CUI操作の方が効率的な場面やCUIでしか操作できない場面もあります。
そのとき、vimを起点に培った知恵があれば、CUI操作も難なくこなせるでしょう。

特にVSCodeの利用経験が少ない方であれば、VSCodeとVimのどちらにしても初めて触ることに変わりはないはずです。
いっそのこととノリでvimを使い始めてみてもよいのではないでしょうか。

ちなみに

私は使っていませんが、VSCodeをはじめとする様々なエディタやその他のソフトウェアにはvimの操作感を模倣したプラグインが存在します。

vimを使っていれば、それらのプラグインを介して爆速操作を実現することができるはずです。

ちなみについでに、vimはTermuxというスマホアプリを用いてスマホから利用することもできます。

おわり

CUIで利用できるエディタは他にEmacs(イーマックス)やnano(ナノ)というものがあります。
vimに限らずCUIエディタを利用することは、何かしら良い副作用があると考えています。
もし興味を持ったのであれば、(特にmacOSを使うなら)vimを使ってみてください。