vim入門

# はじめに

Vimは強力なテキストエディタであり、多くの機能を備えています。この記事では、Vimの基本的な使い方について解説します。

## モードについて

Vimには複数のモードがあり、それぞれのモードで異なる操作ができます。

| モード         | 説明                                                                                   |
|--------------|----------------------------------------------------------------------------------------|
| ノーマルモード   | Vimを起動したときのデフォルトのモード。テキストの移動や編集コマンドを実行できます。                                         |
| 入力モード       | `i`キーを押すと入るモード。テキストの入力が可能です。Escキーでノーマルモードに戻ります。                                   |
| コマンドモード   | `:`キーを押すと入るモード。コマンドを入力してファイルの保存や終了などを行います。コマンド入力後、Enterキーで実行します。       |
| ビジュアルモード | `v`キーを押すと入るモード。テキストの選択ができます。選択後にコマンドを実行することで、選択範囲に対して操作ができます。         |

## ファイルを開く、保存、終了について

| コマンド  | 説明                              |
|---------|---------------------------------|
| `:w`    | ファイルを保存します。                     |
| `:q`    | Vimを終了します。                       |
| `:q!`   | 保存せずに強制終了します。                 |
| `:e`    | 新しいファイルを開きます。                  |

## ノーマルモードでのカーソルの移動

| コマンド                | 説明                                      |
|-----------------------|-----------------------------------------|
| `gg`                  | ファイルの先頭に移動します。                        |
| `G`                   | ファイルの末尾に移動します。                        |
| `CTRL+f` / `CTRL+b`   | 1画面分前進/後退します。                          |
| `w` / `b`             | 次/前の単語の先頭に移動します。                      |
| `^` / `$`             | 行の先頭/末尾に移動します。                        |
| `f`                   | 指定した文字まで移動します。                       |
| `%`                   | 対応する括弧に移動します。                        |

## ビジュアルモードについて

| コマンド            | 説明                                        |
|-------------------|-------------------------------------------|
| `v`               | 文字単位で選択を開始します。                           |
| `V`               | 行単位で選択を開始します。                             |
| `CTRL+v`          | 矩形選択を開始します。                               |
| `gg Shift+V G`    | ファイル全体を選択します。                             |

## カット（削除）、コピー、貼付け

| コマンド    | 説明                             |
|-----------|--------------------------------|
| `x`       | カーソル位置の文字を削除します。             |
| `dd`      | カーソル位置の行を削除します。               |
| `5dd`     | カーソル位置から5行削除します。              |
| `yy`      | カーソル位置の行をコピーします。              |
| `p`       | コピーまたは削除した内容を貼り付けます。       |

## ノーマルモードで使える検索機能

| コマンド       | 説明                                    |
|--------------|---------------------------------------|
| `/(検索語)`   | 指定した語句を検索します。                      |
| `n` / `N`    | 次/前の検索結果に移動します。                   |
| `*` / `#`    | カーソル位置の単語を検索し、次/前の一致箇所に移動します。 |

## テキストの置換

| コマンド                | 説明                                           |
|-----------------------|----------------------------------------------|
| `:s/foo/bar/`         | 現在の行で最初に一致するfooをbarに置換します。             |
| `:%s/foo/bar/g`       | ファイル全体でfooをbarに置換します。                     |
| `:%s/foo/bar/gc`      | ファイル全体でfooをbarに置換し、確認を求めます。             |

## UNDO/REDO

| コマンド        | 説明                         |
|---------------|----------------------------|
| `u`           | 直前の操作を元に戻します。             |
| `CTRL+r`      | 取り消した操作をやり直します。          |

## ウィンドウの分割

| コマンド    | 説明                         |
|-----------|----------------------------|
| `:sp`     | ウィンドウを水平に分割します。        |
| `:vs`     | ウィンドウを垂直に分割します。        |
| `:close`  | 現在のウィンドウを閉じます。          |

## タブ形式

| コマンド          | 説明                                   |
|------------------|--------------------------------------|
| `:tabnew`        | 新しいタブを開きます。                        |
| `:tabe`          | 指定したファイルを新しいタブで開きます。            |
| `gt`             | 次のタブに移動します。                        |
| `:tabclose`      | 現在のタブを閉じます。                        |
| `:tabdo`         | 全てのタブで指定したコマンドを実行します。            |
| `:tabs`          | 開いている全てのタブのリストを表示します。            |
| `:tabm 0`        | 最初のタブに移動します。                        |
| `:tabm {i}`      | i+1番目のタブに移動します。                   |
| `:tabn`          | 次のタブに移動します。                        |
| `:tabp`          | 前のタブに移動します。                        |
| `:tabfirst`      | 最初のタブに移動します。                        |
| `:tabf {file}`   | 指定したファイルを新しいタブで開きます。            |
| `:tabc`          | 現在のタブを閉じます。                        |
| `:tabc {i}`      | i番目のタブを閉じます。                      |
| `:tabo`          | 現在のタブ以外の全てのタブを閉じます。             |

## インデントを揃える

| コマンド | 説明                  |
|--------|---------------------|
| `=`    | インデントを自動で整えます。  |

## 変数や関数名の補完機能

| コマンド     | 説明                        |
|------------|---------------------------|
| `CTRL+n`   | 変数や関数名を補完します。        |

## 矩形選択からの一括編集

| コマンド                | 説明                                   |
|-----------------------|--------------------------------------|
| `CTRL+v` → `shift+i`  | 矩形選択後、選択範囲の行頭にテキストを追加します。   |
| `エスケープ`            | 一括編集を確定します。                      |

## テキストオブジェクトについて

| コマンド    | 説明                          |
|-----------|-----------------------------|
| `c+i+t`   | タグ内のテキストを変更します。          |

## 便利な設定

| コマンド                 | 説明                        |
|------------------------|---------------------------|
| `:set number` / `:set nonumber` | 行番号の表示/非表示を設定します。             |
| `:syntax on` / `:syntax off`   | シンタックスハイライトの有効化/無効化を設定します。 |
| `:set tabstop=4`      | タブ幅を4スペースに設定します。            |
| `:set ignorecase` / `:set noignorecase` | 大文字小文字を区別しない/区別する検索を設定します。 |

個人のメモ用に作成した記事ですが、Vimを使いこなすことで、効率的なテキスト編集が可能になります。
参考にしたい方はどうぞ。