我が社のVimmerに実践的な使い方をインタビューしてみた

## はじめに
リンクラフト株式会社の萩原と申します。
エンジニアをやっており、時々採用や研修にも携わらせていただいております。
リンクラフトアドベントカレンダーの17日目を担当します。

この会社に入社後、Vimで日報を書こうという~~とんでもない~~ものを盛り込まれた研修を受けた時に「なんでVimなんてものがあるんや・・・てかこんなとっつき辛いもの好き好んで使う人なんているのかよ！」という感想を抱いたわけでありますが、いました！我が社にいました！正真正銘のVimmerが！！
現在ではその方と一緒に仕事をしており、触発されて挑戦が始まった訳ですが、案の定ちんぷんかんぷんな状態なので、これからVimに出会うであろう方、あるいは、Vimをまだ使い始めた方向けに実践的な使い方を私の困ったポイントを踏まえながらインタビューを行ったので伝授します。

※その方もアドベントカレンダーに参加しておりますので「Vimってなんだ？」という方は、先に[君もVimmerにならないか](https://qiita.com/sodaira_lincraft/private/a80e1d56951a24a1f616)の記事を参照するのをお勧めします。

## Vimを使い始めた少し前のぼく
* 使いこなせてるなーと思うところ
    * コードの一括整形がすぐにできる
      操作
      ~~~
      gg（カーソルをテキスト内の一番上に移動）
      ↓  
      V（ビジュアルモードに切り替え）※行選択状態
      ↓
      G（カーソルをテキスト内の一番下に移動）※行選択がそのまま一番下まで適用される
      ↓ 
      =（整形）※選択範囲内の整形
      ~~~
* 分かってはいるけれどついやってしまうこと
    * カーソル移動をhjklを使わずに矢印キーを使う
      次はちゃんとhjklを打とうとしたらinsertモードになったままでhjklが入力されてしまう
    * 普通のコピペ操作ができない
      例
      「ctrl + c」 → 「ctrl + v」→ 貼り付かないやんけええええええええええええええ！
     　↓
      おっしゃ、Vimのモード解除したろ
     　↓
      よしよしコピペできたぜー！圧倒的問題解決能力発揮！
    * コード内の文字列検索ができない
      例
      「ctrl + f」→ あれ・・・検索ウインドウでないぞ？
      　↓
      おっしゃ、Vimのモード解除したろ
      　↓
      省略

## インタビューしてみた

#### Q1. なぜ、Vimmerになろうとしたんでしょうか？
> かっこよかったからｗ

それだけ……？

---

#### Q2. 実際にはチートシートを見ただけでは、いざ実際に困った時こうしろ！というのがないので解決に時間がかかってしまいます。具体例を基にVimmerならどうするのか教えて欲しいです。
> ええで。

---

#### Q3. 「Ctrl + C」 → 「Ctrl + V」 → 貼り付かないやんけええええ！どうすれば？
> **y** or **Y** → **p**

わかるかんなもん。

:::note info
**覚え方**  
よっぴー
:::

##### コマンド補足
| コマンド | 動作                     |
|:---------|:-------------------------|
| **y**    | ヤンク（コピー）         |
| **Y**    | 行をヤンク（行ごとコピー）|
| **p**    | 貼り付け                 |

---

#### Q4. 「Ctrl + F」 → あれ……検索ウインドウが出ないぞ？どうすれば？

> **/検索したい文字列** → **n** or **N**

ぶっきらぼうな回答だ。だがそれがいい。

:::note info
**覚え方**  
すらーん
:::

##### コマンド補足
| コマンド      | 動作                    |
|:--------------|:------------------------|
| **/text**     | `text` を検索           |
| **n**         | 次の一致を検索          |
| **N**         | 前の一致を逆方向に検索  |

#### Q5. 他にもよく使うコマンドをシーンと合わせて教えて

> 丸投げかよ

ちぇ。

:::note alert
**抽象的な質問**
怒られる
:::

#### Q6.じゃあ１個だけでいいから！教えて！
> ggVG=

それは知ってるやつ。

#### Q7.お願い！実用的なの教えて！
> :%s/置き換えたい文字/置き換え後の文字/g
>
> 一括置換したい時とかによく使う
>

これはよく使いそう。

##### コマンド補足
| コマンド         | 動作                                       |
|:-----------------|:-------------------------------------------|
| `:%s/foo/bar/g`            | 全置換(`foo`を`bar`に) ※gを付けないと行内の最初のみ置換（全行選択の場合は各行の最初のみ）|

> あとは
> qa
> 繰り返したい操作
> q
> @繰り返したい回数a
> 
> マクロ記録と実行。たまーに必要な時がある。

うーん・・・しばらく使わなさそう。

##### コマンド補足
| コマンド         | 動作                                       |
|:-----------------|:-------------------------------------------|
| `qa`            | レジスタ `a` に操作の記録を開始する          |
| 繰り返したい操作 | 記録対象のコマンド操作を実行する            |
| `q`             | 操作の記録を終了する                       |
| `@a`            | レジスタ `a` に記録した操作を再生する        |
| `@na`           | レジスタ `a` の操作を `n` 回繰り返し実行する |

#### Q8.では最後に、Vimmerになるか悩んでる人へ前向きな一言お願いします
> 為せば成る為さねば成らぬ何事も

## インタビューを終えて
Windows（Mac）OSのショートカットだけで生きてきた私のようなエンジニアにとっては、きっと同じような箇所で躓くのではないでしょうか。
Vimでコードを書くようになってからまだ3日目ですが、すこーしづつ便利だなーとか思えるようになってきました。
Vimmerは本当にマウスを使うことなくコードを書き上げるので、マスターすると最終的には生涯で見た時の作業効率がグッと向上します。
これからもコードを書いていく時間が多い方は、是非この機会にVimmerを目指していただければなと！

最後まで読んでいただきありがとうございました。

-----------
一緒に働く仲間を募集中です！

リンクラフト株式会社では、組織拡大に伴い積極的な採用活動を行っています。
少しでも興味がある方はぜひご連絡ください。

▽会社ホームページ
https://lincraft.co.jp/
▽Instagram
https://www.instagram.com/lincraft.inc/
▽ご応募はこちらより
https://lincraft.co.jp/recruit

※カジュアル面談も受付中です。ご希望の方はHPのお問い合わせフォームよりご連絡ください。