アニメーションで学ぶVim入門 ～精選10機能～

# はじめに

本記事では <b>Vim</b> の使い方を学ぶために、コマンドとキーだけではなく <b>GIF画像によるアニメーション</b> を利用し、使い方をイメージしやすいようにしました。

# 本記事の構成

本記事の構成は下記の通りです。

|章|章名|内容|
|:-:|:--|:--|
|第1章|[精選10機能](#第1章-精選10機能)|精選10機能（使用頻度が高い機能）を整理しました|
|第2章|[便利な機能](#第2章-便利な機能)|Vim の便利な機能を整理しました|
|第3章|[機能一覧](#第3章-機能一覧)|Vim の機能を整理しました|
|-|[付録](#付録)|-|

# 第1章 精選10機能

## ① 新規のファイルを作成する

![1-1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/8e34a187-b4de-8893-afb5-778e9eeaa113.gif)

1. 「`vim 新規ファイル名`」で新規ファイルを開く。
2. 「`i`」で Insert Mode に移る。
3. 本文を入力する。
4. 「`Esc`」で Nomarl Mode に移る。
5. 「`:wq`」でファイルを保存する。
6. 「`cat 新規ファイル名`」でファイルの中身を確認する。

## ② 既存のファイルを編集する

![1-2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/b94545ff-b211-4469-3bb0-477e59ffa71b.gif)

1. 「`vim 既存ファイル名`」で既存ファイルを開く。
2. 「`i`」で Insert Mode に移る。
3. 編集する。
4. 「`Esc`」で Nomarl Mode に移る。
5. 「`:wq`」でファイルを保存する。
6. 「`cat 既存ファイル名`」でファイルの中身を確認する。

## ③ 1行を削除する

![1-3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/274c951c-ec5c-5f5f-c5cd-6218a5712d64.gif)

1. 削除する行にカーソルを移動する。
2. 「`dd`」で削除する。

## ④ 複数行を削除する

![1-4.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/31574788-c68c-ae5a-88d1-c71dc4568263.gif)

1. 削除する先頭行にカーソルを移動する。
2. 「削除する行数 + `dd`」で削除する。

## ⑤ 行単位でヤンク＆ペーストする

![1-5.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/39e2f977-1f50-e0a5-a14f-48b76703d2da.gif)

1. ヤンクする行にカーソルを移動する。
2. 「`yy`」でヤンクする。
3. 「`p`」でペーストする。

## ⑥ 行単位でカット＆ペーストする

![1-6.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/824fc259-15f0-cbb9-c42e-6df171273279.gif)

1. カットする行にカーソルを移動する。
2. 「`dd`」でカットする。
3. 「`p`」でペーストする。

## ⑦ undo / redo

![1-7.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/6cc41776-2984-52e0-5f50-065457d2378a.gif)

1. 「`u`」で undo する。
2. 「`Ctrl-r`」で redo する。

## ⑧ 置換する

![1-8.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/3dea65b1-623b-7258-dd8b-86b005f02a36.gif)

1. 「`:%s/` + 置換前文字列 + `/` + 置換後文字列 + `/g`」で置換する。

## ⑨ 検索する

![1-9.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/3719735d-b97d-e713-0373-70dc6d4bfd63.gif)

1. 「`/` + 検索文字列」で検索する。
2. 「`n`」で後方検索する。
3. 「`N`」で前方検索する。

## ⑩ カーソル上の単語を検索する

![1-10.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/7dcce4fe-bb62-6b6b-2732-198bcda570e2.gif)

1. 「`*`」でカーソル上の単語を後方検索する。
2. 「`#`」でカーソル上の単語を前方検索する。

# 第2章 便利な機能

## ① 特定の行に移動する

![2-1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/95815f90-529b-44e8-f4c9-ad605ba201d6.gif)

1. 「移動したい行数 + `gg`」で移動する。

## ② すべての行頭に接頭語を追加する

![2-2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/4852f288-d5ba-5689-2ab9-3a12e2fb87ca.gif)

1. 「`:%s/^/` + 接頭語」で追加する。

## ③ すべての行末に接尾語を追加する

![2-3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/d7b6cb71-0f2e-e493-794f-bc779f193b42.gif)

1. 「`:%s/$/` + 接尾語」で追加する。

## ④ 特定範囲の行頭に接頭語を追加する

![2-4.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/3ba496eb-95c5-0a1b-3ad1-5fe13df9e5be.gif)

1. 「特定範囲の先頭行数 + `gg`」で先頭行に移動する。
2. 「`Ctrl-v`」で矩形選択をする。
3. 「特定範囲の最終行数 + `gg`」で最終行に移動する。
4. 「`I`」で Insert Mode に移る。
5. 接頭語を入力する。
6. 「`Esc`」で Normal Mode に移る。

## ⑤ 特定範囲の行末に接尾語を追加する

![2-5.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/57cce090-6d96-5115-a6cd-011dadbaee33.gif)

1. 「特定範囲の先頭行数 + `gg`」で先頭行に移動する。
2. 「`Ctrl-v`」で矩形選択をする。
3. 「特定範囲の最終行数 + `gg`」で最終行に移動する。
4. 「`$`」で行末を選択する。
5. 「`A`」で Insert Mode に移る。
6. 接尾語を入力する。
7. 「`Esc`」で Normal Mode に移る。

## ⑥ インデントを増減する

![2-6.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/b3d1084f-5189-bf7e-fb38-9b6ef7f6dc14.gif)

1. インデントを増やす行を選択する。
2. 「増やすインデント数 + `>`」でインデントを増やす。
3. インデントを減らす行を選択する。
4. 「減らすインデント数 + `<`」でインデントを減らす。

## ⑦ 大文字小文字を変換する

![2-7.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/dbcadd63-9097-1264-70a5-ff5adb57859b.gif)

1. 小文字にしたい箇所を選択する。
2. 「`u`」で小文字に変換する。
3. 大文字にしたい箇所を選択する。
4. 「`U`」で大文字に変換する。

## ⑧ 改行を削除する

![2-8.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/c7b91ee9-99c9-301c-97f7-52aa6ac17905.gif)

1. 改行を削除したい行を選択する。
2. 「`gJ`」で改行を削除する。

## ⑨ 空白を挿入して改行を削除する

![2-9.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/4035e69e-3d5b-81d6-f66a-0cd754ac86bb.gif)

1. 改行を削除したい行を選択する。
2. 「`J`」で改行を削除する。

# 第3章 機能一覧

## Mode の切り替え

### Normal Mode

![4-31.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/0b735727-d31c-b15b-721f-42d08f109f8e.gif)

|キー|動作|
|:--|:--|
|Esc|Normal Mode に移る|

![4-32.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/1c73d127-0e39-fd8b-3965-a81a3d08eaf9.gif)

|キー|動作|
|:--|:--|
|Ctrl-[|Normal Mode に移る|

### Insert Mode

![4-33.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/02c2f0fc-091b-5e28-80e1-c73f6ce6bed1.gif)

|キー|動作|
|:--|:--|
|i|カーソルの位置から Insert Mode に移る|

![4-34.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/c257b955-f072-addc-5417-49d31e341a4e.gif)

|キー|動作|
|:--|:--|
|a|カーソルの直後から Insert Mode に移る|

![4-35.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/33827782-dc50-87c9-03a5-949a8ac9592d.gif)

|キー|動作|
|:--|:--|
|I|行頭から Insert Mode に移る|

![4-36.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/99bad487-9156-ae2c-e9a9-4b7568d59526.gif)

|キー|動作|
|:--|:--|
|A|行末から Insert Mode に移る|

![4-37.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/ff524608-102d-345d-6e75-a1e887099b4b.gif)

|キー|動作|
|:--|:--|
|s|カーソル上の文字を削除してから Insert Mode に移る|

![4-38.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/d0564965-ee3c-df0e-688c-521663e55b6e.gif)

|キー|動作|
|:--|:--|
|cw|カーソル上から単語末までを削除してから Insert Mode に移る|

![4-39.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/54a6823f-9bff-4718-1176-e5917bd42408.gif)

|キー|動作|
|:--|:--|
|ciw|カーソル上の単語を削除してから Insert Mode に移る|

![4-40.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/2db7e8fb-a927-cb11-8df0-1bd817b8bf17.gif)

|キー|動作|
|:--|:--|
|ci"|ダブルクォーテーションの内部を削除して Insert Mode に移る|

![4-41.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/6319a47f-14ee-b80f-ab18-f04b55978191.gif)

|キー|動作|
|:--|:--|
|cit|HTMLタグの内部を削除して Insert Mode に移る|

![4-42.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/8e7462bd-ed42-7636-e257-56496e81b7c4.gif)

|キー|動作|
|:--|:--|
|S|カーソルがある行を削除してから Insert Mode に移る|

![4-43.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/cc666226-3730-8dd8-ecbc-dbb43283b26e.gif)

|キー|動作|
|:--|:--|
|C|カーソルがある位置から行末までを削除してから Insert Mode に移る|

![4-44.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/21b9b293-04bb-b774-571a-188b9e411656.gif)

|キー|動作|
|:--|:--|
|o|カーソルがある行の下に新たな行を追加して Insert Mode に移る|

![4-45.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/2941f7f5-2f00-67d7-4ad0-4e39cf6dfb21.gif)

|キー|動作|
|:--|:--|
|O|カーソルがある行の上に新たな行を追加して Insert Mode に移る|

### Visual Mode

![4-46.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/27b938ae-94f0-7ba3-7b22-d78a272ec449.gif)

|キー|動作|
|:--|:--|
|v|Visual Mode に移る|

![4-47.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/0a27deab-0742-dd20-2568-9379a72e2761.gif)

|キー|動作|
|:--|:--|
|V|行単位の選択をして Visual Mode に移る|

![4-48.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/ea81a7e3-3bf7-99d9-2a58-4ba61b5ea637.gif)

|キー|動作|
|:--|:--|
|Ctrl-v|矩形選択をして Visual Mode に移る|

### Command Mode

![4-49.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/df0bb830-77e4-78d8-957e-e2d1415bdfc9.gif)

|キー|動作|
|:--|:--|
|:|Command Mode に移る|

## Normal Mode

### 画面スクロール

![4-1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/49317d60-3387-3520-cf1b-5eccbed0a68d.gif)

|キー|動作|
|:--|:--|
|Ctrl-f|1画面、下にスクロールする|
|Ctrl-b|1画面、上にスクロールする|

![4-2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/02a9408f-deef-f50f-b3e6-d98b3dd5d1b6.gif)

|キー|動作|
|:--|:--|
|Ctrl-d|半画面、下にスクロールする|
|Ctrl-u|半画面、上にスクロールする|

![4-3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/c795c2eb-f417-32cd-4664-97207524a388.gif)

|キー|動作|
|:--|:--|
|Ctrl-e|1行、下にスクロールする|
|Ctrl-y|1行、上にスクロールする|

![4-4.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/c38279d7-def7-7b54-8c43-c6fd55d8e7a5.gif)

|キー|動作|
|:--|:--|
|zz|カーソルがある行を画面中央になるようにスクロールする|

### カーソル移動

![4-5.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/6ce32a90-b0e1-6fbd-4773-670bbacfff3b.gif)

|キー|動作|
|:--|:--|
|h|←|
|j|↓|
|k|↑|
|l|→|

![4-6.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/184d18dd-2776-2944-a97e-4a5cb4b10e11.gif)

|キー|動作|
|:--|:--|
|w|単語単位で後方に移動する|
|b|単語単位で前方に移動する|

![4-7.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/8bf4ef67-9729-da11-8258-bf4dcb4b3f8f.gif)

|キー|動作|
|:--|:--|
|0|行頭に移動する|
|^|文頭に移動する|
|$|行末に移動する|

![4-8.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/0440b3fd-41d7-b427-9666-ca0959bcdfca.gif)

|キー|動作|
|:--|:--|
|gg|先頭行(1行目)に移動する|
|数字 + gg|"数字"行目に移動する|
|G|最終行に移動する|

![4-9.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/83792954-6c90-7cfd-7086-6c23f6f7d85e.gif)

|キー|動作|
|:--|:--|
|Shift-]|下方の空行に移動する|
|Shift-[|上方の空行に移動する|

![4-10.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/1c65eba7-1c49-11f5-f2d7-1aa81b087cee.gif)

|キー|動作|
|:--|:--|
|%|対応する括弧に移動する|

![4-11.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/26b4463e-c937-120a-4863-cb01ecfd72b5.gif)

|キー|動作|
|:--|:--|
|H|画面上の一番上の行に移動する|
|M|画面上の真ん中の行に移動する|
|L|画面上の一番上の行に移動する|

### 削除

![4-12.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/f09f702c-4a4e-0d0f-aae3-e17b67c6e199.gif)

|キー|動作|
|:--|:--|
|x|文字を削除する|

![4-18.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/26155c48-7923-2a73-43c6-351a5757b8e0.gif)

|キー|動作|
|:--|:--|
|D|カーソルがある位置から行末まで削除する|

![4-13.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/99683282-e407-4081-9680-7832b877cc2c.gif)

|キー|動作|
|:--|:--|
|diw|カーソルがある単語を削除する|

![4-14.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/9129ff4f-25bb-16da-9ba3-4f6de55ddbd1.gif)

|キー|動作|
|:--|:--|
|di"|ダブルクオートの内部を削除する|

![4-15.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/70ac7a78-1ddd-da91-c8bb-51b803324f50.gif)

|キー|動作|
|:--|:--|
|dit|HTMLタグの内部を削除する|

![4-16.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/799a2766-4a99-3092-59a5-bc71980b2cc1.gif)

|キー|動作|
|:--|:--|
|dd|カーソルがある行を削除する|

![4-17.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/0bc28b4e-8524-4270-1513-95ed7967175f.gif)

|キー|動作|
|:--|:--|
|数字 + dd|カーソルがある位置から下方の"数字"分の行を削除する|

### ヤンク＆ペースト

![4-19.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/9380f4f6-879d-747b-719e-c7c2cf749d63.gif)

|キー|動作|
|:--|:--|
|yiw|カーソルがある位置の単語をヤンクする|

![4-20.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/7e237339-9e7b-763e-418a-016756b4e857.gif)

|キー|動作|
|:--|:--|
|yi"|ダブルクォーテーションの内部をヤンクする|

![4-21.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/8be8e53d-9962-2dfe-ebe6-50d1632cc46a.gif)

|キー|動作|
|:--|:--|
|yit|HTMLタグの内部をヤンクする|

![4-22.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/23235a91-64f7-9c01-1c4f-89f6ecd195aa.gif)

|キー|動作|
|:--|:--|
|yy|カーソルがある位置の行をヤンクする|

![4-23.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/52464504-7168-21d8-f9ba-4f4762654b05.gif)

|キー|動作|
|:--|:--|
|数字 + yy|カーソルがある位置から下方の"数字"分の行をヤンクする|

![4-22.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/23235a91-64f7-9c01-1c4f-89f6ecd195aa.gif)

|キー|動作|
|:--|:--|
|p|行は下方に、単語は右方にペーストする|

![4-24.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/3c7985d0-d294-acd5-3848-42cfbc431e6a.gif)

|キー|動作|
|:--|:--|
|P|行は上方に、単語は左方にペーストする|

![4-25.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/2b4a9b84-766e-235d-43ec-f63bf44bf9b9.gif)

|キー|動作|
|:--|:--|
|数字 + p|行は下方に、単語は右方に"数字"分の行/単語をペーストする|

![4-26.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/f88738a5-f7c2-06f7-de8c-c74896c73b44.gif)

|キー|動作|
|:--|:--|
|gv|直前の選択範囲を再選択する|

### 検索

![4-27.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/3f16e7e2-02ab-4d25-3bea-4e48ca84887d.gif)

|キー|動作|
|:--|:--|
|/ + 文字列|文字列を上から検索する|
|n|カーソルより下側にある検索候補に移動する|
|N|カーソルより上側にある検索候補に移動する|

![4-28.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/5047ad92-5ba1-2d89-4de9-025d2d3af0bd.gif)

|キー|動作|
|:--|:--|
|? + 文字列|文字列を下から検索する|
|n|カーソルより下側にある検索候補に移動する|
|N|カーソルより上側にある検索候補に移動する|

![4-29.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/5080dfed-decc-1d8d-fb62-932bf9ad0c42.gif)

|キー|動作|
|:--|:--|
|*|カーソル上の単語を下方に検索|
|#|カーソル上の単語を上方に検索|

### undo / redo

![4-30.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/e9884dd1-cdaa-fcec-e832-6afa1091d1e2.gif)

|キー|動作|
|:--|:--|
|u|undo|
|Ctrl-r|redo|

### インクリメント / デクリメント

![4-50.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/8cfcbdff-7f8a-42f7-3bf8-6936511ccec1.gif)

|キー|動作|
|:--|:--|
|Ctrl-a|数字を増やす|
|Ctrl-x|数字を減らす|

### インデント

![4-51.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/a2de83dc-131c-0856-081c-dbdefd155045.gif)

|キー|動作|
|:--|:--|
|==|インデントを調整する|

![4-52.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/57bed06b-351b-5ac6-0778-0d9e2b6157d7.gif)

|キー|動作|
|:--|:--|
|>>|インデントを増やす|
|<<|インデントを減らす|
|数字 + >>|現在のカーソルから数字分の下の行のインデントを増やす|
|数字 + <<|現在のカーソルから数字分の下の行のインデントを減らす|

![4-53.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/125ef8f2-b8df-4c97-1961-6d13e5194f72.gif)

|キー|動作|
|:--|:--|
|選択 + 数字 + >|選択した行を"数字"分だけインデントを増やす|
|選択 + 数字 + <|選択した行を"数字"分だけインデントを減らす|

## Insert Mode

### インデント

![4-54.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/aa83899f-05dd-637b-4724-8957228b25ff.gif)

|キー|動作|
|:--|:--|
|ctrl-t|インデントを増やす|
|ctrl-d|インデントを減らす|

## Visual Mode

### 選択

![4-55.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/a2da9c49-0c28-c02e-18cf-e8cd3a832bf4.gif)

|キー|動作|
|:--|:--|
|viw|カーソル上の単語を選択する|

![4-56.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/ba48f27c-da29-2d98-ab1f-7ae30c281a2c.gif)

|キー|動作|
|:--|:--|
|vi"|ダブルクォーテーションの内部を選択する|

![4-57.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/ad067a54-4dc0-27ee-0cd8-6ad06cc8879d.gif)

|キー|動作|
|:--|:--|
|vit|HTMLタグの内部を選択する|


### 全選択

![4-71.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/d49625db-8ae0-ae3b-6568-814698b68261.gif)

|キー|動作|
|:--|:--|
|gg + V + G|ファイル全体を選択する|

## Replace Mode

### 上書き

![4-58.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/d8d38c84-ec52-acb6-3433-4417569f4590.gif)

|キー|動作|
|:--|:--|
|r + 文字|任意の"文字"を上書きする|

![4-59.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/34cb5e35-bb2f-9db3-3581-58cc4a1833f7.gif)

|キー|動作|
|:--|:--|
|R + 文字列|任意の"文字列"を上書きする|

## Command Mode

### 保存 / 終了

![4-60.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/1db52237-f48c-f8e3-a009-abc62f0d2942.gif)

|キー|動作|
|:--|:--|
|:w|ファイルを保存する|

![4-61.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/fcfc879f-f317-a5b2-3302-6c2f3a413879.gif)

|キー|動作|
|:--|:--|
|:w + filename|"filename"名でファイルを保存する|

![4-62.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/6d00a670-1843-de87-d24a-ed9901fc0a72.gif)

|キー|動作|
|:--|:--|
|:q|編集を終了する|

![4-63.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/48eb5259-ecf8-353a-5655-c9383f52d021.gif)

|キー|動作|
|:--|:--|
|:q!|編集を強制終了する|

### 置換

![4-64.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/fe5c2710-d1b9-526a-3afd-e61171468657.gif)

|キー|動作|
|:--|:--|
|:s/before/after|カーソルの行にある最初の"before"を"after"に置換する|

![4-65.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/5e0a55b4-c9c9-122d-0f3a-5c8a76715787.gif)

|キー|動作|
|:--|:--|
|:s/before/after/g|カーソルの行にある"before"をすべて"after"に一括置換する|

![4-66.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/b907c0d8-276d-7717-f2f8-5d2a251bb55f.gif)

|キー|動作|
|:--|:--|
|:%s/before/after/g|ファイルのすべての"before"を"after"に一括置換する|

![4-67.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/391a5e49-95d9-c457-43b4-7ee1bb6ad15e.gif)

|キー|動作|
|:--|:--|
|:%s/^/prefix|ファイル全体のすべての行の先頭に"prefix"を追加する|

![4-68.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/7b8711db-29dd-bd63-13b2-faaf69ef7fd1.gif)

|キー|動作|
|:--|:--|
|:%s/$/suffix|ファイル全体のすべての行の末尾に"suffix"を追加する|

![4-69.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/0648a96d-0f41-95e6-f463-6353f7fdcd0e.gif)

|キー|動作|
|:--|:--|
|:%s;/var/home;/usr/home|パス名などを置換するときは、"/"でなく、";"を区切り文字に使用する|

### 削除

![4-70.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/316599/092c025b-2725-b1e9-0801-50b52ab316ba.gif)

|キー|動作|
|:--|:--|
|:g/文字列/d|"文字列"を含んでる行を削除する|

# 付録

## バージョン

使用した Vim のバージョンは下記です。

```text
VIM - Vi IMproved 9.1
```

## 参考

本記事は下記を参考にしました。

* [脱初心者を目指すなら知っておきたい便利なVimコマンド25選 (Vimmerレベル診断付き)](https://qiita.com/jnchito/items/57ffda5712636a9a1e62)
* [Vim幼稚園からVim小学校へ](https://qiita.com/hachi8833/items/7beeee825c11f7437f54)
* [よく使う Vim のコマンドまとめ](https://qiita.com/hide/items/5bfe5b322872c61a6896)
* [覚えておきたい Vim コマンド 備忘録](https://qiita.com/colorrabbit/items/755cfbb0e97d48280775)
* [Vimコマンド : 便利一覧](https://qiita.com/iwaseasahi/items/f536bb3772d2fad5e03c)
* [help - Vim日本語ドキュメント](https://vim-jp.org/vimdoc-ja/)

## アニメーション作成ソフトウェア

アニメーション（GIF画像）を作成するために下記のソフトウェアを利用しました。

* [ScreenToGif](https://www.screentogif.com/)