VimとNeoVim入門: 基本コマンドで効率的なテキスト編集に初学者さんも早い段階で慣れていこう！

# VimまたはNeoVimの基本コマンドについてわかりやすく説明します
**VimまたはNeoVimの基本コマンドをわかりやすく説明します。
多くのベテランエンジニアが愛用しているVimやNeoVim（以下Vim）に、初学者も早い段階で慣れていこう！**

Vimはいかに手をホームポジションから動かさないでマウスを使わずに全ての事ができてしまう作業効率爆上げエディタです。

## Vimは何？
Vimは、コマンドを使ってマウスなしで作業ができる優れたツールです。

正直に言うと、最初は作業効率が下がることもありますが、慣れると非常に便利です。


ターミナルからファイルをちょっと書き換えたい場合`vim　ファイル名`と打ち込めば簡単に書き込めます。

ですがキーボード叩いても文字でないじゃん！どうやって保存してファイルから抜け出すの？とかマウスでできていたことが

マウスを使えないので、当たり前にできることができないなんてVimを使っているとよくある話です。

その様な問題を解決するために基礎コマンドチートシートとして共有します！！！

Vimは『習うより慣れろ！』なので毎日少しだけでも使って行きましょうとその様な気持ちを込めて書いております。

# まずコマンドを書く前に基礎知識を知っておきましょう！
Vimは、独立したテキストエディタとして使うだけでなく
他のIDEと連携して補助的に活用することもできます。
例えば、VSCodeとNeoVimを連携させて、
コードを書きながらVimのコマンドを練習することができます。
### VSCodeとNeoVimの連携方法
1. VSCodeを開き、拡張機能タブから「NeoVim」を検索します。
2. NeoVimの拡張機能をインストールすることで、VSCodeでコードを書きながらVimのコマンドを練習できます。
インストール方法や設定については、今回の記事の範囲外ですので省略しますが、詳細は以下のリンクから参照できます。

https://github.com/vscode-neovim/vscode-neovim#installation

https://murakamipeipei.com/2022/04/24/vscode-%E3%81%A8-neovim-%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/

こちらの方のブログわかりやすく自分も設定できたので、**VSCode**を
使っていて、**Vimコマンド**慣れたいって方は是非お勧めします。
ブロガーさんありがとうございます！\:bow:

### VimとNeoVimの違い
Vimでできることは基本的にNeoVimでもできますし
NeoVimはVimの上位互換として開発されており、いくつかの改善点があります。
そのため、基本的にはNeoVimを使うことをおすすめします。

それでは基礎コマンド行ってみましょう！
# モード切り替えコマンド

| モード          | 説明                                                  |
|-----------------|-------------------------------------------------------|
| インサートモード(iまたはa) | 実際に文字が打ち込めるモード                          |
| ノーマルモード(esc)   | 文字は打ち込めないが、vimのコマンドが使えるモード    |
| ビジュアルモード(vまたはshift + v) | カーソル指定する事ができる。|

インサートモードの`i`は選択中の文字の後ろに、`a`は前にカーソルがきます。
ビジュアルモード`v`はその場からコマンド移動することで、カーソル指定できる
shift + `v`はその行全体をカーソル指定できる

### カーソル移動系コマンド
| キー | モード        | 操作       |
|-----|-------------|------------|
| k   | ノーマルモード | ↑に移動     |
| j   | ノーマルモード | ↓に移動     |
| h   | ノーマルモード | ←に移動     |
| l   | ノーマルモード | →に移動     |

このコマンドはそう！！右手のホームポジションの真ん中の行のボタンです！
慣れが必要です。
余談ですが`zh`と打つと←が出力されます。矢印でうって出さなくても出せるこれ便利！
`zj`　→　　↓
`zk`　→　　↑
`zl`　→　　→
←↓↑→
### ファイル保存系コマンド

| コマンド     | モード|説明                             |
|------------|-----|---------------------------|
| :w ファイル名  | ノーマルモード|名前をつけて保存                 |
| :w         | ノーマルモード|上書き保存                       |
| :q         | ノーマルモード|編集終了                         |
| :q!        | ノーマルモード|保存しないで編集終了               |
| :wq        | ノーマルモード|保存して終了                     |           


コンマ(:)から始まるのがポイント
これらを知らないとファイルから抜け出せません。(私は抜け出せなくておでこの広がりが加速しました。)

### 削除系のコマンド
| コマンド          | モード        | 説明                           |
|-----------------|-------------|------------------------------|
| x               | ノーマルモード | １文字削除                     |
| dd              | ノーマルモード | 1行削除                       |
| dw              | ノーマルモード | 単語の削除(半角スペースごと)    |
| 2 dd            | ノーマルモード | 2行削除(数字ごとに削除できる行数を指定する) |
| u               | ノーマルモード | Undo (行動の１つ前に戻る)        |
| control + r     | ノーマルモード | Undo redo (逆に１つ先に進む)   |

コマンド`u`は個人的にすごく使うコマンドです。
例えば）間違えて消してしまったり書いてしまったりしたときに1つ元の状態に戻ります。
ショートカットキーにも実はありmacなら`⌘ + z`でできます。
ですが`u`コマンドひとつでできるのいいですよね！
### コピー＆ペースト系コマンド

| コマンド       | モード        | 説明                         |
|--------------|-------------|----------------------------|
| yy           | ノーマルモード | 1行コピー                   |
| p            | ノーマルモード | 下にペースト                 |
| P  (大文字)          | ノーマルモード | 現在行にペースト             |
| 2 yy         | ノーマルモード | 2行コピー                   |
| .            | ノーマルモード | Repeat (直前のコマンドを繰り返す) |


これも慣れたらかなり使えると私は思います。
慣れましょう！
ピリオド(.)を使うと前回のコマンドを実行できます。
前回のコマンドをコピーするので、コピー系に入れてみました
**長いコマンド等を繰り返し使いたい時によく使います。**
### Vimファイル内でターミナルのコマンド使いたい時系コマンド
| コマンド                   | モード       | 説明                       |
|--------------------------|------------|--------------------------|
| :              | ノーマルモード | コマンド入力               |
| !ターミナルで使うコマンド達 | ノーマルモード | コマンドの実行             |
| !!                        | ノーマルモード | 前のコマンドを実行         |

:::note warn
必ず`: または /`から始めてください！
:::

使う場面：
vimではいちいちファイルを抜けてからコマンドを打たなければなりませんが
escでノーマルモードにしてから`:`で
!をうってターミナルと同じコマンドを打てば
vimを開きながらコマンドを実行できる。
同じコマンドを実行するなら`:!!`これだけで長いコマンドの場合本領発揮する
### 上下左右以外の移動系コマンド
| コマンド      | モード        | 説明                     |
|-------------|-------------|------------------------|
| :set number | ノーマルモード | 行番号を表示する         |
| :10         | ノーマルモード | 10行目に移動             |
| $           | ノーマルモード | 行末に移動               |
| 0           | ノーマルモード | 行の先頭に移動           |
| {           | ノーマルモード | 段落ごとに上に移動       |
| }           | ノーマルモード | 段落ごとに下に移動       |
| [[          | ノーマルモード | セクションごとに上に移動 |
| ]]          | ノーマルモード | セクションごとに下に移動 |
| :1 または gg | ノーマルモード | ファイルの先頭に移動     |
| G (大文字)          | ノーマルモード | ファイルの最後に移動     |
| control + o | ノーマルモード | 移動前に戻る             |

まずは行番号を出して
`:100`と打てば100行目に一気に飛べる。
私は全部覚えられません、最初は`gg` `G` `[[` `]]`コマンドだけ覚えて
積極的に使って、少しずつおぼえるコマンド増やしてけばいいかなと思います！
### 単語検索機能系コマンド
| コマンド                 | モード        | 説明                             |
|------------------------|-------------|--------------------------------|
| /検索したい単語          | ノーマルモード | 検索                             |
| n                      | ノーマルモード | 次の検索結果に移動                 |
| N                      | ノーマルモード | 前の検索結果に移動                 |
| R                      | ノーマルモード | 置換               |
| dw                     | ノーマルモード | 単語削除 |
| :%s/検索/置換/g          | コマンドモード | 一括置換                           |
| :%s/検索/置換/gc         | コマンドモード | 確認しながら置換                   |
| :noh                   | コマンドモード | サーチして色がついたやつを消すことができる   |

これらのコマンドはコード量が多いほど本領発揮します。
検索と置換、非常に便利なのでできたら使って行きましょう。

## 終わりに
Vimは１ヶ月２ヶ月で習得できるものではありません、
末長く使えるツールなの気長に使ってマスターしましょう！
~~私の場合、Vim以外でも覚える事いっぱいありますが。~~

ご閲覧ありがとうございました\:bow: