初心者向けVim/NeoVim超入門 Vimは8つのキーバインドさえ覚えれば最低限使える。ターミナルインストールからじっくり丁寧に

# 対象読者
・Vimって何？っていう人
・Vimを使えるようになりたいけどどこから手をつけていいかわからない人
・とりあえず、Vimの基本だけおさえたい人
・普段Vimを使用することがあまりない人

以上のように、初心者向けなので、
Vimを普段から使っている人や、
Pluginをゴリゴリ入れているような人には、
参考になりません。

プラグインのゴリゴリ設定や、
マニアックなキーバインドや、
マクロのようなVimの応用的な機能とかは、
別記事で紹介しようと思います。

**本記事では、これだけは覚えておきたい、
Vimのキーバインドを紹介しております。**

# Vimとは何か？
Vimとは、UNIX系OSで搭載されていることが多い、
viエディタを改良した(Vi IMprovedでVim)
テキストエディタです。

![Screenshot 2022-12-16 at 7.52.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1290117/04d25895-db0b-60df-d62a-ce76eecb4f24.png)

プログラミングをするには、コードを書かないと行かないので、
エディタが必須なのですが、Vimはそうしたエディタの一種です。

他に、VScode,nano,Emacsなど、色々なエディタがありますが、
その中でも、VimはほとんどのLinux環境にインストールされている、
汎用性の高さと、一度身につけてしまうと、他のエディタには戻れないぐらいの、
圧倒的な使いやすさが魅力のため、人気のエディタの一種です。

また、メインエディタとして使わなくとも、
サーバの中に入ってログインして作業することや、エンジニアなら
多かれ少なかれあると思うので、
Vimが最低限使用できないと困る場面も多いです。

そのため、基礎を習得することは、
必須教養といってもいいでしょう。


# ターミナルのインストール

すでにお気に入りのターミナルがある人は
飛ばしてください。

ターミナルは、Vimを使う際の、
土台となるため、
かなりこだわってほしい部分ではあります。
なので、個人的には自分の好きなターミナルを使うのが最もいいのですが、
ここでは一応無難なターミナルをいくつか紹介しておきます。

### Macの場合
正直Macなら、iTermを使えば、
解決です。

私も色々なターミナルを試しましたが、
やはり王道は強く、
個人的には、iTermを超えるターミナルは
まだ存在しない印象です。(あくまで個人的な感想です)

**iTerm2**

https://iterm2.com/

### Windowsの場合

普段、あまりWindowsは使わないので、
正直私のほうが、おすすめターミナルを教えてもらいたいぐらいです。
一応、使っていた時期に、インストールして、
割と良かったターミナルとしては、

**cmder**

https://cmder.app/

**cygwin**

https://www.cygwin.com/

WindowsとVimの相性はあまり良くなく、
レジスタやクリップボード関係で結構苦労した記憶があります。
Vimの記事を書いておいてあれですが、
WindowsならベストエディタはやはりVScodeのような気がしています。
(あくまで個人の感想です。)

それでも、Vimの基本を学ぶことは必須だとは思いますが。

### Linuxの場合

LinuxはiTerm2が使えないこと以外は、
特に問題がなく、結構幅広いターミナルが使える印象です。

もちろん、VimとLinuxの相性は抜群なので、
その点でも問題はないでしょう。

正直Linuxを普段使いしている人は、
自分のお気に入りターミナルを見つけていると思いますが、
念のため紹介します。

**kitty**

https://sw.kovidgoyal.net/kitty/binary/

**alacritty**

https://alacritty.org/

**terminator**

https://gnome-terminator.org/

# vim/neovimのインストール
さて、ターミナルがインストールできたら、
早速ターミナルを開いて、
vimをインストールしましょう。

```
sudo apt update
sudo apt install vim
```

windowsのwslとLinuxのdebian系なら
このコマンドでインストールできます。

macなら、
```
brew install vim
```
でインストールできます。
macとかLinuxの場合、最初からvimがインストールされていることが
ほとんどだとは思いますが。

```
vim
```
でvimが起動すれば
正常にインストールされています。

![Screenshot 2022-12-16 at 7.52.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1290117/7e52f5cc-df45-feb1-0cc0-6439e7c7bcec.png)


# iキー

さて、上記のようにvimが開いたら、
iキー押してみましょう。

![Screenshot 2022-12-16 at 8.23.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1290117/9ba9cc1a-400c-1da8-8401-508bbf6f36b7.png)

左下に、INSERTという文字が表示されているはずです。

これはiキーを押すことで
INSERTモードになったからです。

Vimにはいくつかのモードがあるのですが、
最初は、このINSERTモードとノーマルモードさえ覚えておけば大丈夫です。

Vimを起動した時点では、
ノーマルモードになっています。

INSERTモードになって、
キーボード色々入力すると、
普通のエディタのように文字を入力することができます。
(その名の通りINSERT(挿入)モードですね。)

実はiキー以外にもINSERTモードに入ることができるキーはあるのですが、
覚えることが増えるので、まずはiキーでINSERTモードに入ると
覚えておけば大丈夫です。

# w/wq!/q/q!キー

さて、INSERTモードで編集が終わったら、
保存をしたいですよね。

ただ、INSERTモードのままだと、
保存ができないので、一旦ノーマルモードに戻る必要があります。

**ノーマルモードに戻るには、escキーを押します**

そして、
```
:w
```
で保存ができます。

![Screenshot 2022-12-16 at 8.31.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1290117/3191292b-143c-b34e-6018-8abb229708df.png)

一番下に:wと表示されています。
ノーマルモードで:と押すと、
保存などのコマンドを実行することができます。

:から始まっているキーバインドは、
何らかのコマンドと思っていただいて大丈夫です。

保存してvimを終了したいときは、
```
:wq(またはwq!など)
```

保存せずにvimを終了したいときは、
```
:q
```

保存せずに強制終了したいときは、
```
:q!
```

# uキー

こちらもノーマルモードでのキーで、
普段のCtrl + ｚと同じような効果が得られます。

すなわち、**直前の編集や変更を取り消してもとに戻す**といった
感じです。

間違って、編集してしまったときに、
大変重宝するコマンドです。


# escキー/jjキー(カスタムキーバインド)

すでに紹介しましたが、
**escキーでノーマルモードに戻ることができます。**

ただ、escキーはやや押しづらいので、
カスタムキーバインドでjjなどにすることが多い気がします。

カスタマイズのやり方としては、
vimの設定ファイルが、
~/.vimrcなので、
このファイルを作成して、

```:.vimrc
inoremap <silent> jj <ESC>
```
ターミナルをsourceコマンドなどで再読み込みしたら、
jjでescと同様の動作にすることができます。

これは好みなので、escのままの人もいます。
お好きなほうを選択してください。


# j/k/l/hキー

さて、vimの移動ですが、
ノーマルモードで、j/k/l/hキーで
基本的な移動ができます。

**jキーは、一行下へ(↓と同様)
kキーは、一行上へ(↑と同様)
lキーは、一文字右へ(→と同様)
hキーは、一文字左へ(←と同様)**

# /キーと移動方法

ノーマルモードで、
/を押すと、検索を始めることができます。

テストという文字を検索した例
![Screenshot 2022-12-16 at 8.52.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1290117/abacd4be-7fdd-a550-ba56-e097d2bd62d2.png)


**検索して複数ヒットした際は、
nキーを押せば、次のマッチした候補に移動することができます。
Nキーを押せば、前のマッチした候補に移動しまう。**

そのため、/での検索は、ちょっとした移動コマンドとしても
使えます。

例えば、4000行ぐらいあるファイルでも、
console.logの行に移動したければ、
間に何行あろうと、一瞬で移動することができます。

移動系については、他にもたくさんありますが、
検索による移動は使う頻度が多いので、
紹介しました。

# Ctrl + f / Ctrl + b

これらはスクロール系のコマンドで、
のノーマルモードで、
**Ctrl + fを押すと、
1ページ下にスクロールします。**

対して、**Ctrl + bを押すと、
1ページ上にスクロールします。**

# ggキー/ Gキー

こちらも移動系で、
**ggキーで、ファイルの先頭に、
Gキーで、ファイルの最終行に移動します。**


# ここでは紹介しなかったがよく使うキー一覧
- p(ペースト)
- yy(ヤンク)
- dd(削除/ヤンク)
- o/Oインサート
- a/Aインサート
- Ctrl + r(取り消しの取り消し)
- x(文字の削除)
- r(置換)
- :term(ターミナルモード)

これらについては、また別の記事で。