ゆるっと始めるVim

## はじめに
### この記事の目的
筆者が半年間Vimをゆるく続けたら、気づけば楽しく使えるようになった経験を元に、初心者でも無理なくVimを始められるロードマップを紹介します。
きっとあなたも、Vimが好きになるはずです。

※この記事では、コマンドの紹介や設定の説明は最低限にとどめます。

### 対象読者
- Vimに興味はあるけど敷居が高いと感じている人
- Vimを使い始めたけど、途中で挫折した人

### 筆者がVimを使えるようになるまで
昨年の4月から未経験転職でエンジニアになり、入社直後にVimハラを受け、VSCodeをアンインストールするも、3日で挫折。

「コマンドを覚えなきゃいけない」というのが嫌すぎて、しばらく遠ざけていましたが、心の奥底では「絶対Vim使えた方がいいよな...」という思いが常にありました。

そこで思いついたのが、「一気にやるのは辛いので、長期間かけてゆるっと続ける」作戦です。短期間で頑張ってコマンドを覚えるのではなく、ゆるく長期間かけてやっていけば、勝手にできるようになってるんじゃ？という算段です。

これがうまくハマり、現在エディタはNeovimを使用しています。(精進中)


### Vimを始める心得
Vimは「すべてをマスターしなければ使えない」ものではありません。日々の生活や仕事の中で、少しずつ取り入れていくことで自然と手に馴染み、いつの間にかなくてはならない存在になるはずです。

- **最初から完璧を目指さない**
    - いきなり「矢印キーを絶対使わない」など、完璧を目指した縛りルールは挫折しがち
- **自分の中の「楽しい」を原動力に**
    - コマンドを覚えなきゃと思わず、少しずつできることから楽しむ

<br>
以下、私が実際に取った行動をもとに、ロードマップを3ステップでご紹介します。

## ステップ1: ブラウザ操作をVimっぽくしてみる
#### 期間: Vim活開始 1~2ヶ月目

仕事でもプライベートでも毎日使うブラウザ操作を、Vimのコマンドで操作出来るように設定しましょう。Google Chromeの拡張機能の[Vimium C](https://chromewebstore.google.com/detail/vimium-c-all-by-keyboard/hfjbmagddngcpeloejdejnfgbamkjaeg?hl=ja&authuser=2)がオススメです。
以下のキー操作は実際のVimでも、めちゃめちゃ使用します。
<table>
  <caption>使って欲しいキー</caption>
  <thead>
    <tr>
      <th>キー</th><th>説明</th>
    </tr>
  </thead>
  <tr>
    <td>j</td><td>下に移動</td>
  </tr>
  <tr>
    <td>k</td><td>上に移動</td>
  </tr>
  <tr>
    <td>f</td><td>リンクにフォーカス</td>
  </tr>
  <tr>
    <td>gg</td><td>ページの先頭に移動</td>
  </tr>
  <tr>
    <td>G</td><td>ページの末尾に移動</td>
  </tr>
  <tr>
    <td>Esc</td><td>何が起きたか分からなくなった時に連打しましょう</td>
  </tr>
</table>

これで、あなたの世界にVimが取り入れられました。
最初は「なにこれ、すごっ！」ってなると思います。いつもと違う操作感を楽しみましょう。
このフェーズでは、お使いのエディタでVimを使うことを考えず、まずブラウザ操作で雰囲気を掴みましょう。大事なことなので2回言いますが、まずはブラウザ操作だけでOKです。操作が手に馴染むまで、焦らずに行きましょう。


#### 楽しむポイント
- おお！スクロールできるスゴい！
- マウス使わないの意外とあり？

## ステップ2: VSCodeなどにVimの拡張機能を入れる
#### 期間: Vim活開始 2~4ヶ月目
ブラウザ操作を通してキーボードでの上下移動をマスターしたあなたは、きっと普段使っているエディタでも同じように操作したいと思い始めているでしょう。

このフェーズから本格的にVimを使い始めます。
VSCodeの拡張機能の検索窓から「Vim」と検索し、お好みのものをインストールしてみてください。以下のものでいいかもしれません。

https://marketplace.visualstudio.com/items?itemName=vscodevim.vim

ここからはノーマルモードやインサートモードなど、モードといった新たな概念が出てきます。(ビジュアルモードやコマンドモードは割愛)

#### ノーマルモード
- テキストの編集ではなく、操作に特化したモード

#### インサートモード
- テキストを実際に入力するモード


<table>
  <caption>まず使って欲しいキー</caption>
  <thead>
    <tr>
      <th>キー</th><th>説明</th>
    </tr>
  </thead>
  <tr>
    <td>h</td><td>左に移動</td>
  </tr>
  <tr>
    <td>l</td><td>右に移動</td>
  </tr>
  <tr>
    <td>x</td><td>一文字消す</td>
  </tr>
  <tr>
    <td>dd</td><td>一行消す</td>
  </tr>
  <tr>
    <td>yy</td><td>一行コピー(ヤンク)</td>
  </tr>
　<tr>
    <td>p</td><td>貼り付け</td>
  </tr>
  <tr>
    <td>i</td><td>インサートモードに切り替え</td>
  </tr>
  <tr>
    <td>Esc</td><td>インサートモードからノーマルモードへ</td>
  </tr>
</table>



最初は、移動・削除・コピペなどの最低限のテキスト編集ができるコマンドから始めましょう。

**ここでも大事なことは、「絶対矢印キーは使わない！」と自分を厳しく縛らないことです。** 操作がうまくいかずイライラする日は、無理せず矢印キーでカーソルを移動させてください。そして次の日、新たな気持ちで、少しだけでもいいのでVimのコマンドで操作してみましょう。
本当に少しだけで良いのです。毎日少しずつでもVimを触り続けることで、いつの日か自然とできることが増えていきます。**「焦らず、続ける」ことだけを意識しましょう。**

他にどんな操作ができるんだろう？と気になった方は、基本的なVimの操作を学べるチュートリアル「vimtutor」にチャレンジするのがいいと思います。
お使いのPCのターミナルで以下のように実行するだけでチュートリアルが起動します。
```
$ vimtutor
```

「vimtutor」では、たくさんのコマンドが出てきますが、一気に覚える必要はありません。ちょっとずついいなと思ったものをメモして、使ってみましょう。


#### 楽しむポイント
- キーボードだけで編集ってカッコいい！
- コマンドすごそうだな、明日使ってみよう〜

## ステップ2と並行: チートシート作り
ステップ2で、あなたは数多くのコマンドと出会うことでしょう。コマンドが多くて「あのコマンドなんだっけ？」と必ずなります。
**自分の脳内整理のためにも、自分だけのチートシートを作る**と良いでしょう。
私はNotionにまとめており、日々気になったコマンドはメモしています。使っていないコマンドは忘れるので、たまにチートシートを見返すと、「こんなのあったな」となります笑


## ステップ2と並行: 記事や動画で深掘り
ステップ2で紹介した、移動・削除・コピペだけだど、正直Vimの良さがあんまりわかり辛いかもしれません。
まだまだたくさん便利なコマンドがあるので、「こういうことできないかな...」と思ったら、ググってみましょう。ChatGPT先生に聞くのもいいと思います。

また下記の教材は、本当に良かったので、なんとなく移動・削除・コピペに慣れた方は、ぜひ見てみてください。
<br>

- **はじめてのVim 〜 Vimはいいぞ！ゴリラと学ぶVim講座**

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

各モードごとに詳しい説明＆コマンドが紹介されていて、Vimでどんなことができるか網羅的に学習できます。

<br>

- **【Vim入門Vol.1】これを覚えるだけで入門できる！Vimの使い方超入門**

https://www.youtube.com/watch?v=UP0oV_1Q0Q8&t=1s

私はこの動画を見てからVimの虜になりました。「えっ？？こんなこともできるの？？？」ともっとVimに興味が湧くはずです。

## ステップ3: 設定ファイルを書いて、エディタとしてのVimを使ってみる
#### 期間: Vim活開始 4~6ヶ月目
お使いのIDEでVimの操作にある程度なれたあなたは、きっと日々色んなコマンドを検索して、「こんな面白いコマンドありました！」と会社の同僚や友人に自慢げに話しているはずです。
そして薄々、自分で設定ファイルを書けば、自分独自の設定ができることも気が付いているでしょう。あんまり良くわからないけどプラグインなるものの存在も知っているはず。

このフェーズでは、自分で設定ファイルを書いてVimを本格的にエディタとして使い始めてみましょう。

### 設定ファイルについて
設定ファイル(`.vimrc`/`init.vim`など)をご自身で用意すると、VimやNeovimでキーマッピングをカスタマイズできます。「このキーって若干押しずらいな...」と感じるものがあったら、思い切って設定ファイルを書いてみるのもいいかもしれません。

一から書くのは大変なので、検索して良さそうなものを真似してみましょう。

私は`$`や`^`を押すのが苦手なので、`Cnt+h`や`Cnt+l`で文頭・文末に移動できるように設定しています。
```
"ノーマルモード/ビジュアルモード時に、文頭・文末に移動するキーを変更
nnoremap <C-h> ^
nnoremap <C-l> $
vnoremap <C-h> ^
vnoremap <C-l> $
```

### プラグインについて
「IDEぽくしたいな」や「見た目かっこよくしたい」とあれば、プラグインを入れてみましょう。本当にいろんな種類があるので、一度は聞いたことがある **「それ Vim でできるよ」とはこのことか** 、と痛感するでしょう。
おすすめプラグインの記事をみたり、GitHubのリポジトリを検索して、有名どころをざっと見てみるのも面白いかもしれません。

私が使っているプラグインの一例をご紹介します。
- fzf (ファイル検索)

https://github.com/junegunn/fzf


- vim-gutter (Gitの差分表示など)

https://github.com/airblade/vim-gitgutter

- vim-airline (ステータスラインをカッコよくしてくれる)

https://github.com/vim-airline/vim-airline


- rainbow (ペアのカッコに色つけてくれる)

https://github.com/luochen1990/rainbow

設定ファイルを少しずつ書き、エディタの操作性が向上していくと、
設定ファイルを書くこと自体がどんどん楽しくなり、「これもできるかな？あれもできるかな？」と調べたり、試行錯誤したりする時間が増えていくでしょう。

#### 楽しむポイント
- やば！このキーバインドはやばい！俺天才！
- あれ？もうこんな時間？このプラグイン試したかったけど、明日やるか...

## 補足: 私がVSCodeからNeovimに移行するまで
普段の業務中は、VSCode上でVimの拡張機能を使用しつつ、
Vim活4ヶ月目くらいから、少しづつNeovimの設定ファイルを書いていきました。

この設定ファイルを書くことがとても楽しく、自分だけのキーバインドを設定したり、色んなプラグインを入れて使ってみたり、まるで**自分だけのエディタを作り上げている感覚**でした。

ある程度設定ファイルが書けたところで、Neovimで編集したり、VSCodeで編集したりと行き来しながら、Vim活6ヶ月目で、完全にNeovimに移行しました。


※もしあなたが、VSCodeの拡張機能VSCode Neovimをお使いの方なら、ご自身で設定した`init.lua`を読み込んでくれるみたいなので、自分で設定ファイルを書きつつVSCodeが使えるそうです。

## ステップ4: 無限の彼方へ
#### 期間: Vim活開始 6ヶ月目~
ここまで来たあなたはきっと、Vimなしの生活が考えられないほどにVimを愛用し、Vimを始めたのころにつまづいて苦労したあの日々を懐かしく思うかもしれません。

当時感じていた敷居の高さや「コマンドを覚えなきゃ」というプレッシャーは、もはやどこ吹く風。あの豊富なコマンドの数々は、いつの間にか自然と手に馴染んでおり、自分でも驚くほど使いこなしていることに気付くでしょう。

このフェーズでは、あなたの興味の赴くままに挑戦してみてください。
あなただけのVimスタイルを探求し、さらに進化させていきましょう。

## 最後に
ここまでお付き合いいただき、ありがとうございました。
Vimは確かに最初は難しいかもしれませんが、長期間ゆるく続けていくことで必ず手に馴染む日が来ます。この記事が、あなたのVimライフの始まりの一歩の手助けになれば幸いです。