「vimでコーディングできたらカッコいいな」
エンジニアなら一度は妄想したことがあるはず。(私はよくしてます)
使えたらなんか凄いけど、とっつきにくいと感じる。
そんなvimについてまとめてみました。
この記事を参考に、ちょっとvimを触ってみましょう。
vimってなに?
vimは、Linuxに標準で搭載されているテキストエディタで、viというエディタの拡張版なんだとか。
Windowsでいうところの「メモ帳」のグレードアップ版といった感じでしょうか。
vimでは「インサートモード」と「コマンドモード」を切り替えながら、全てコマンド操作でファイル編集を行います。
Visual Studio Codeをはじめ、さまざまな便利機能を搭載したエディタ(通称、リッチエディタ)がありますが、僕の勝手なイメージだと、「世界のつよつよエンジニア」はけっこうな割合で、vimのようなシンプルで高速、かつ自分色にカスタマイズができるエディタを好んで使っている印象です。
ちなみに、vimを愛用する方々をvimmer(ヴィマー)と呼びます。
vimがなぜ世界中のエンジニアから愛されているのか?
世界にはいろんなエディタがある中で、vimはどうしてエンジニアたちに愛用されているのか?
簡単に特徴を整理してみました。
コマンド操作
ガリガリコードを書いてる時って、キーボードとマウスの持ち替えすら煩わしいと感じることが多いです。
リッチエディタやEclipseなどのIDEなんかは、機能が豊富なぶん、なかなかキーボード操作だけでは扱いきれないことが多く、タイムロスに感じるエンジニアもいます。
vimはターミナル上で起動し、CUI(キーボード入力だけで操作する)ツールなので、基本マウスを触らずコマンドだけでいじれるのがGoodというわけです。
自由にカスタマイズできる
サクラエディタとかもそうですが、vimもスクリプトを書いて自分仕様にカスタムした状態で使用することができます。
とはいっても、プラグインを自分でコード書いて作る人はレアで、「世の中の誰かが作った便利なプラグイン」をインストールしてありがたく使わせてもらっている人がほとんどだと思います。
動作が軽い
vimはリッチエディタと比べて、機能を絞っているぶん、サクサク動いて軽快に作業することに特化しています。
vim愛用者(vimmer)の方は、IDEなどの起動の遅さにイライラしそうですね。
ターミナル上でそのまま使える
vimはLinux標準のエディタなので、特殊なセットアップとかはいらず、Linuxのターミナルを起動してすぐに使用開始できるのが便利です。
例えば、Dockerで立ち上げたLinuxやAWS上に立てたLinuxに接続して、何かファイルをサクッと編集することができます。
インフラ周りを触るエンジニアさんは、使えるようになっておくと作業しやすいですね。
よく使うコマンドメモ
自分用という意味も含めて、vimでよく使うコマンド操作を整理しておきます。
ファイル操作コマンド
:w | 保存する |
:w [filename] | 名前をつけて保存 |
:w! | 強制的に保存する(読み取り専用ファイルとか) |
:q | vimを閉じる |
:q! | 強制的にvimを閉じる(編集内容未保存の場合とか) |
:wq | 保存して閉じる |
:wq! | 保存して強制的に閉じる |
モード変更コマンド
a | カーソル位置の次の文字から編集開始 |
Esc | インサートモードを抜ける |
i | カーソル位置から編集開始 |
I(大文字のi) | 先頭から編集開始 |
o | 下に行を挿入して編集開始 |
移動コマンド
h | 左へ移動 |
j | 下へ移動 |
k | 上へ移動 |
gg | 先頭行へ移動 |
G | 最終行へ移動 |
$ | 行末へ移動 |
O(大文字o) | 行頭へ移動 |
^ | 行の文字の開始位置へ移動 |
w | 次の単語へ移動 |
編集コマンド
yy | カーソル行をコピー |
dd | カーソル行を削除 |
D | カーソル位置から後ろを削除 |
p | カーソル位置の後ろにペースト |
P | カーソル位置にペースト |
検索コマンド
/[keyword] | [keyword]を検索 |
n | 検索結果を順に見る |
N | 検索結果を逆順に見る |
# | カーソル位置にある単語を検索 |
置換コマンド
:s/[before_word]/[after_word]/g | [before_word]を検索して[after_word]に置換する |
:sx,y/[before_word]/[after_word]/gc | x〜y行目の中で[before_word]を検索して[after_word]に置換する |
まとめ
エディタはあくまでもツールです。このツールを使いこなすことで、本質的な作業(コードを書くこと)に効率的・かつ集中して取り組むことが本来の目的になります。
とにかく、どんどん使って慣れていくことが大事です。
僕も、まずはvimで日記でも書いてみようと思いますw
あなたもぜひ、vimmerになりましょう!