Vim初心者が0から学んで解説

# はじめに

本記事を閲覧いただきありがとうございます。
都内でSEをしておりますhirokiです。

今回は``「vim」``に関して、解説していけたらと思います。

「解説します😤」と偉そうなことを言っておりますが、これまでvimは名前を聞いたことがあるくらいで、どんなものなのか1mmも知らない状態でした、、、

そこで今回は
* 初心者目線で0からvimを学び、アウトプットすることで
   **これからvimを学ぶ人に役立つ記事を書く**

ことを軸に記事を書き上げましたので、ぜひ最後まで閲覧いただける嬉しいです。

# vimとは

vimとは
**「マウス無しでキーボードだけで操作が可能なテキストエディタ」** のことです。
キーボードのコマンド入力のみで
* テキスト間の移動
* テキストの選択
* テキスト挿入、削除、コピペ
* テキスト内検索
* ファイル作成・保存


といったことが可能です。詳細に関しては後ほど説明します。

vim使い曰く、使いこなせるようになれば、マウスを使うよりはるかに早いスピードで、テキストを編集することが可能になるそうです、、、！
（私はまだまだそのレベルまで行ってませんが、早くそのレベルまで行きたいです）

:::note warn
まとめ
vimとはマウスレスのテキストエディタ。慣れれば高速でコーディングが可能。
:::





# モードの種類

vimとはの章にて「移動や選択、、etc」ができますよと書きましたが、
その`今何ができるかの状態`を示すのが`モード`と呼ばれるもので、
大きく分けて4つのモードがあり、ここで紹介させていただきます。

|　モード名　　　|　　主な動作　　　　　　　　　　　　| 
|:-----------|------------:|
| NORMAL|カーソル移動、テキストコピペ、テキスト削除、入れ替え　、、etc　　　　　　　　　　　　　　　　　| 
| INSERT|テキストの入力　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　|
| VISUAL     |テキストの選択　　　　　　　　　　　　　　　　　　　　　　　　　　　| 
| COMMAND    |ファイル保存、vimエディタを閉じる　　　　　　　　　　　　　　　　　　　 | 

上記のモードの状態はテキストの下部の部分で確認することができます。

![スクリーンショット 2023-08-04 8.15.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2265379/e4348f80-b51a-4a41-dbd6-f4acb23ad3ab.png)

このモードの状態によって`打てるコマンド`が変わります。
言い換えると、`打ちたいコマンドに合ったモードを選択`できていないと、そのコマンドを実行することができません。
例えばモードが「NORMAL」の状態では、テキストを入力することができず、「i」コマンドでモードを「INSERT」に切り替えて初めて入力できるようになります。
なので初めのうちは **常にモードの状態を確認しながら** コマンドを叩いていく必要があるでしょう。

以下、`基本的なモードの切り替え方法`をまとめたのでご確認ください。

| モード名 | 切り替えコマンド | 
|:-:|:-:|
|NORMAL|  `esc` |  
|INSERT |`a` `i` `A` `I` `ciw`   |  
|VISUAL| `v`  | 
|COMMAND| `:`  | 

:::note warn
まとめ
**モード**の状態によって叩けるコマンドが変わる。
初心者は常にモードの状態を確認しながら操作すること。
:::

# 覚えておきたい基本コマンド

実際に使用するvimコマンドをまとめていきたいと思います。
覚えると言ってもvimコマンドは全部で、２０００以上あると言われており、１から全て覚えるの大変です。
そこで
 ``よく使う基本コマンド``を整理しながら記述していくことで
この記事を閲覧いただいてる方がvimコマンドを体系化して理解することに役立てたらと思っております。



#### 移動コマンド(基本)

| コマンド名 | 動作 |
|:-:|:-:|
| h　(←) | カーソルを左に移動  |
| j　(↓) | カーソルを下に移動  |
| k　(↑)  | カーソルを上に移動  |
| l　(→)  | カーソルを右に移動  |

#### 移動コマンド(左右)

| コマンド名 | 動作 |
|:-:|:-:|
| w | 単語の先頭から空白を含む末尾まで移動する |
| e | 単語の先頭から空白を含まない末尾まで移動する|
| 0  | 行の先頭に移動する  |
| $  | 行の末尾に移動する  |

#### 移動コマンド(上下)

| コマンド名 | 動作 |
|:-:|:-:|
| H | 表示されている画面の一番上へ移動|
| M | 表示されている画面の真ん中へ移動|
| L  | 表示されている画面の一番下へ移動|
| gg  | ファイルの先頭へ移動|
| G  | ファイルの最後尾に移動|

#### オペレーターコマンド(基本)

| コマンド名 | 動作 |
|:-:|:-:|
| c | 指定範囲を削除してINSERTモードに変更|
| d | 指定範囲を削除|
| y  | 指定範囲をコピー|

上記オペレーターコマンドは単体で使うことはできず`範囲指定`のコマンドと合わせて使われます。

#### 削除系操作コマンド

| コマンド名 | 動作 |
|:-:|:-:|
| dw | カーソルの位置から空白含む単語範囲で削除|
| de | カーソルの位置から空白含まない単語範囲で削除|
| dd | 行全体を削除 |
| D/d$ | カーソル位置から行の末尾までを削除|
| x | カーソルの位置の文字を削除|
| ce | カーソルの位置から空白含まない単語範囲で削除した後にINSERTモードに変更|
| cc | 行全体を削除した後に変更INSERTモードへ変更|
| C | カーソル位置から行の末尾までを削除した後にINSERT|

#### 選択＋コピー＋ペースト系操作コマンド

| コマンド名 | 動作 |
|:-:|:-:|
| v + 移動コマンド + y | 範囲してしてコピー |
| yy/Y | 行全体をコピーする|
| yw | カーソルの位置から次の単語までをコピー|
| p  | コピーした内容をカーソル位置の下行に貼り付け|
| P | コピーした内容をカーソル位置の上行に貼り付け|


#### テキストの挿入

下記コマンドはNORMALモードからINSERTモードに切り替え、テキストを挿入できるようにするコマンドです。

| コマンド名 | 動作 |
|:-:|:-:|
| i | カーソル位置にテキストを挿入する |
| a | カーソルから1文字後にテキストを挿入する |
| A | 行末に移動して挿入モード |
| o | 行の下に新しい行を作成して挿入モード |
| O | 上に新しい行を作成し挿入モード |


#### 終了/保存コマンド

| コマンド名 | 動作 |
|:-:|:-:|
| :w | 作成中のファイルを上書き保存 |
| :wq | 保存してからファイルのウィンドウを閉じる |
| :q | 保存せずにファイルのウィンドウを閉じる |


#### 取り消し操作コマンド

| コマンド名 | 動作 |
|:-:|:-:|
| u | カーソル位置にテキストを挿入する |
| U | カーソルから1文字後にテキストを挿入する |

#### 検索操作コマンド

| コマンド名 | 動作 |
|:-:|:-:|
| / | カーソル位置から下方向にキーワードを検索 |
| ? | カーソル位置から上方向にキーワードを検索 |






# 実際に手を動かしながら覚えよう

ここまで基本的コマンドについて紹介してきましたが、
実際に習得するには`手を動かしながら`覚えていくことが必要です。
野球のルールブックを眺めていても野球が上手くならないと同様に
実際にvim操作を自分で体験して身体に染み込ませていく必要があります。


私も含め、マウス操作にどっぷり浸っている人にとっては最初は苦行でしかないところですが、これに関しては時間をかけて徐々に矯正していくしかありません。

以下練習方法になります

### １　vimtutorを使って基本的コマンド手を動かしながら確認
[vim](https://www.vim.org/)をダウンロード済PCのウィンドウズならコンソール、Macならターミナルにて
```
 example@username-PCname ~ % vimtutor
```

と打ち込むだけで、下記のvim練習用エディタを使用することが可能です。![スクリーンショット 2023-08-02 21.46.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2265379/6cfaef7f-23b7-72ca-9291-cb422b8c5214.png)

こちら一通りの基本コマンドを手を動かしながら確認できるようになっており、
手始めにはこちらを最後までやってみることおすすめします。
大体３０分ほどで終わると、書かれてますが、vim操作に慣れていないと１時間ほどかかるかもしれません。

### 2 vim プラグインをVSコードに入れてvim操作にてテキストを記述する

VSコードの拡張機能にvim機能を入れると、VSコードでvim操作をすることが可能になります。
下部「NORMAL」などのvimのモード名が記入されていればインストール成功です。
こちらで、最初はチートシートを見ながら、vim操作でコードを記述していくことで、vim使いに近づけるのではないかと思います。
![スクリーンショット 2023-08-03 12.27.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2265379/48e4cfac-12f5-c470-959b-fe0b4e0d2cb4.png)

:::note warn
まとめ
vim操作はとにかく手を動かしながら慣れていこう
:::

# 終わりに
vimに関していかがだったでしょうか。
vim操作は普段マウス操作に慣れている人にとっては、苦行ですが、vimのマウスレス操作に慣れれば高速エディタを使用することが可能になります。
ブラインドタッチやショートカットキーと同様に、
* 習得するまで地味に面倒
* ただ反復すれば誰にでもできる
* でも面倒だからやる人が少数

をできる人は強いです。

私もまだまだマウス頼りなところはありますが、マウスレス操作に今後矯正していけたらと思っています。
次回以降も技術的な内容の記事をアップしていくので閲覧いただけると嬉しいです。
ここまで閲覧いただきありがとうございました。



# 参考文献



https://qiita.com/JpnLavender/items/fabcc79b4ab0d52e1f6d

https://qiita.com/Hiyajo/items/9f87c5687652da42f275