個人的な備忘録：Vimエディターの基本操作と便利なコマンドをまとめてみた

## はじめに
今回は、MacやLinux環境でファイルを編集する際に使用する「**Vimエディター**」についてご紹介します。

:::note info
**これまで私は主にviエディターを使用してきましたが、この機会にVimエディターへの乗り換えを本気で検討しています。**
:::

***本記事は、私の個人的な備忘録として作成したものですが、どなたかの技術的な参考になれば幸いです。***

## 書こうと思ったきっかけ
受講しているITスクールのハッカソンに参加している中で、同じメンバーの方のターミナル操作が非常にスムーズで感動しました。

:::note warn
***特に、ファイル操作ではVimエディターを使い、滑らかでスピーディーな作業をしている姿がとても印象的でした。***
:::

一方、私の場合は、恥ずかしながら今でもViエディターをメインで使っています。

さらに、3行以上の編集が必要な場合にはVS Codeを利用するという形で使い分けをしているのが現状です。

**この経験をきっかけに、本気でVimエディターを使いこなし、生産性を向上させ、ターミナル内での操作を効率化していきたいと思うようになりました。**

## 私がViを使っていた理由
では、なぜ私が今までViエディタを使っていたのかというと、多くのサーバーを管理していた経験があったからです。

***Viエディタは多くの環境で標準インストールされており、追加の作業をせずにそのままファイルを編集することができます。***

一方で、Vimエディタは標準でインストールされていない場合があり、その場合は手動でインストールする必要があります。

:::note alert
**しかし、この「インストール」という作業自体がシステムの変更作業に該当します。そのため、Vimをインストールした後に何らかの不具合が発生すると、システム障害に繋がるリスクがあります。**
:::

このような背景から、私は無意識のうちにViばかりを使うようになり、その延長でMacBookでもViエディタを使い続けていた、という経緯があります。

## そもそもVimとは？
ここでは、Vimエディターの特徴やメリット・デメリットについて簡単にご紹介します。***参考になれば幸いです。***

#### 特徴
- **シンタックスハイライト**: コードを見やすく色分け。
- **コード補完**: プログラムを書く際に自動補完が可能。
- **プラグイン対応**: 様々な機能を追加できる。
- **多言語サポート**: メニューやメッセージが多言語対応。
- **多彩な操作性**: 履歴、複数バッファ、検索と置換の拡張機能など。

#### メリット
- Viよりも高機能で柔軟。
- 開発者やシステム管理者に人気。
- プラグインを使ってさらに拡張可能。

#### デメリット
- 初心者には設定や操作が少し難しい。
- Viに比べて若干重い（ただし、近代的な環境ではほとんど問題にならない）。

## 実際にコマンドを紹介してみた
私のMacBookでは、すでにVimエディターを使用できる状態になっています。

***ただし、まだ導入されていない方は、以下のサイトを参考にインストールしてみてください。***

https://qiita.com/Futo_Horio/items/21456f8acbad3c6bb442

### 1. 行のコピーとペースト

| コマンド | 機能                         |
|----------|------------------------------|
| `yy`     | 現在の行をコピー             |
| `p`      | コピーした行をカーソルの下にペースト |
| `P`      | コピーした行をカーソルの上にペースト |

**用途**

文章やコードの一部を素早く複製したいときに使用します。

**実例**

1. コピーしたい行にカーソルを置く。
2. `yy` を押して現在の行をコピー。
3. ペーストしたい場所にカーソルを移動。
4. 
   - コピーした行を下に挿入したい場合は `p` を押す。
   - コピーした行を上に挿入したい場合は `P` を押す。

**補足**

複数行をコピーする場合は、コピーしたい行数を指定して `yy` を使用します。  
例: 3行コピーしたい場合 → `3yy`

### 2. 複数行の選択と削除

| コマンド | 機能                         |
|----------|------------------------------|
| `V`      | 現在の行を選択               |
| `j`      | 選択範囲を次の行に拡大       |
| `d`      | 選択した行を削除             |

**用途**  
不要な複数行をまとめて削除したい場合に便利です。

**実例**  
1. 選択を開始したい行にカーソルを置く。
2. `V` を押して現在の行を選択。
3. `j` を押して選択範囲を次の行に拡大。
   - 必要に応じて `j` を複数回押して選択範囲を増やす。
4. `d` を押して選択した行を削除。

**補足**  
- 選択した範囲を削除せずにコピーしたい場合は `y` を使用します。
- 選択範囲を取り消したい場合は `Esc` を押します。

**応用例**  
- **一気に5行削除する場合**  
  `V` → `5j` → `d`

### 3. 特定の行へジャンプ

| コマンド | 機能                      |
|----------|---------------------------|
| `:10`    | 10行目にジャンプ           |
| `G`      | ファイルの最終行に移動     |
| `gg`     | ファイルの先頭行に移動     |

**用途**  
長いファイルで特定の行に素早く移動したいときに使用します。

**実例**  
1. 特定の行に直接ジャンプしたい場合：  
   - `:10` と入力してエンターを押すと、10行目にジャンプします。
2. ファイルの最終行に移動したい場合：  
   - `G` を押します。
3. ファイルの先頭行に移動したい場合：  
   - `gg` を押します。

**補足**  
- 行番号を確認しながら操作したい場合は、`:set number` コマンドで行番号を表示できます。
- ジャンプ先で間違えた場合は、`Ctrl-o` を押すと元の位置に戻れます。

**応用例**  
- **50行目にジャンプ**  
  `:50` を入力してエンター。

### 4. ファイルを保存して終了

| コマンド | 機能                          |
|----------|-------------------------------|
| `:w`     | 保存                          |
| `:q`     | 終了                          |
| `:wq`    | 保存して終了                  |
| `:q!`    | 保存せずに強制終了            |

**用途**  
作業の途中や完了時にすばやく保存・終了するために使用します。

## まとめ
ここまでお読みいただき、ありがとうございました。***これを機に、本格的にVimエディターを活用していこうと決意しました。***

:::note info
**やはり、ターミナル内での操作スピードを向上させることは非常に重要だと改めて実感しました。**
:::

**今回の記事は技術的な詳細には踏み込んでいませんが、どなたかの学びや気づきのきっかけになれば幸いです。**