今回の記事ではvimに命を捧げるエンジニアがvimの魅力の一部をコピペを例に解説していきます。
プログラムを書いていると似たようなコードを次の行にも書きたいという場面はいっぱいあります。
// 似たような処理を2行書きたい!
System.out.println("Hello world");
このような場面でコピペを使って複製するか、自分でタイピングするかどっちの方が早いか微妙で迷うことってありませんか? vimを使えば迷わず速攻でコピペをすることができます。具体的に違いを見ていきましょう。

似たような処理を記述する時のコピペをvimなら一瞬で行える!
[temp id=2]
vimなしのコピペ
Javaで標準出力を二回したい時を考えてみます。具体的には以下のようなコードを書きたいとしましょう。
System.out.println("Hello, World");
System.out.println("Hello, Java");
あなたは1行目を書いた後、2行目はどんな手段で書きますか?このくらいの処理だと一々キーボードからマウス・トラックパッドに手を移すのが面倒に感じて、そのまま自分でタイピングする人もいるんじゃないでしょうか?そういった人は間違いなくvimを導入してください。いやいやコピぺを使うよという人も多いと思います。1行目を書いた後コピペして2行目を書く時の手の動きを整理してみましょう。
- キーボードから手を離して、マウスもしくはトラックパッドに移動する
- コピーしたい行を選択する
- 「control + c」でコピーする
- 選択を解除
- 改行する
- 「control + v」でペースト
- マウス・トラックパッドからキーボードに手を戻す
これでやっと1行コピーして次に行に同じコードが追加されます。この間手はキーボードのホームポジションから、マウスそして再びキーボードと移動を繰り返します。これが意外と面倒くさい。しかもcontrolを押すのもめんどくさくないですか?タイピングが早い人だと自分で入力した方が早いかもしれません。
ここで僕が主張したいのは、コピペって意外と面倒臭い!ということです。じゃあvimを使ったらどうなるのかということを見ていきたいと思います。
[temp id=2]
vimを使ったらどうなるのか
vimを使ってコピペをする場合どんな手の動きが必要になるか整理してみます。
- escキーでノーマルモードに変更
- 「yy」と入力
- 「p」と入力
以上です。手をキーボードから離す必要もありませんし3つの操作を行うだけです。爆速なんですよ。どんなにタイピングが早い人よりも素早くコピペすることができるでしょう。vimは素晴らしいんです。
vimを使ったことがない人からするとノーマルモードってなんだよって話だと思います。vimには普通のエディタと違ってモードという概念があります。インサートモードの時に文字の入力が行うことができ、ノーマルモードの時はコマンドを使って様々な操作を行うことができます。エスケープキーを押すことでインサートモードからノーマルモードにモード変更が可能ということです。なので今回の手の動きの中でも最初にノーマルモードへの変更が行われているわけなのです。
次に「yy」と入力するわけですが、これがノーマルモードで入力されるとカーソルがある行がコピーされます(vimではコピーのことをヤンクという)。
そして最後に「p」と入力します。これはコピーしたものをペーストします。
以上の操作のみでコピペを行うことができるのがvimなのです。1番の魅力は手をキーボードのホームポジションから動かさなくて良いということです。
[temp id=2]
どんな人がvimを使うべきか
ではどんな人がvimを使うべきでしょうか?
まずはタイピングが早い人です。タイピングが早い人がvimを使いこなせるようになったらそれはまさに「鬼に金棒」あなたのコーディング速度に敵う人はこの世に存在しません。
次にタイピングが遅い人です。タイピングの遅さをvimがカバーしてくれます。タイピングが早い人と対等に渡り合うことができるでしょう。
感の鋭い方はお気付きかもしれませんが、つまり全員vimを使った方が良いということです。vimを使いましょう!