Vimmerになるために覚えるコマンド

# Vimmerになるために覚えるコマンド

vimmerになる人のためのチートサイトとして活用ください。

## コマンドモード

### 入力編集

| コマンド   | 説明 |
|:-----------|:------------|
| i          | カーソルの左から入力開始 |
| I          | 行頭から入力開始 |
| a          | カーソルの右から入力開始 |
| A          | 行末から入力開始 |

- 挿入モードからESCキーを押すことでコマンドモードに戻る

### 保存、終了

| コマンド        | 説明 |
|:----------------|:------------|
| :w              | 保存 |
| :q              | 終了 |
| :q!             | 保存せずに終了 |
| :wq or ZZ or :x | 保存して終了 |
| :w ファイル名   | ファイル名を指定して保存 |

### カーソル移動

| コマンド（下）  | 説明 |
|:----------------|:------------|
| j or Ctrl-N     | 1行進む |
| [n] j           | n行進む |
| L               | 画面最下に進む |
| Ctrl-d          | 半画面進む |
| G               | ファイル末尾に進む |

| コマンド（上）  | 説明 |
|:----------------|:------------|
| k or Ctrl-P     | 1行戻る |
| [n] k           | n行戻る |
| H               | 画面最上に戻る |
| Ctrl-u          | 半画面戻る |
| gg              | ファイル先頭に戻る |

| コマンド（左）  | 説明 |
|:----------------|:------------|
| h or BackSpace  | 1文字戻る |
| [n] h           | n文字戻る |
| 0 or ^          | 行頭へ飛ぶ |

| コマンド（右）  | 説明 |
|:----------------|:------------|
| l or Space      | 1文字進む |
| [n] l           | n文字進む |
| $               | 行末へ飛ぶ |

| コマンド（その他） | 説明 |
|:-------------------|:------------|
| :[n]               | n行目を指定して移動 |
| fa                 | その行で次に見つかる文字aまで移動 |
| Fa                 | その行で前に見つかる文字aまで移動 |
| ta                 | その行で次に見つかる文字aの前まで移動 |
| Ta                 | その行で前に見つかる文字aの前まで移動 |

### 削除、コピー、貼り付け

| コマンド         | 説明 |
|:-----------------|:-----------|
| [n] x            | n文字右側へ消す |
| [n] X            | n文字左側へ消す |
| [n] d ターゲット | ターゲット参考 |
| d [n] ターゲット | ターゲット参考 |
| [n] yy           | 1行バッファにコピー |
| p                | バッファ内のテキストを挿入（文字はカーソルの右、行はカーソルの下に挿入） |
| P                | バッファ内のテキストを挿入（文字はカーソルの左、行はカーソルの上に挿入） |
| :r               | ファイルの中身を挿入する |

- ターゲット
 - w: カーソル位置から空白を含む単語の末尾まで削除 
 - e: カーソル位置から空白を含まない単語の末尾まで削除
 - $: カーソル位置から行末まで削除
 - d: 1行削除切り取り

### 検索

| コマンド         | 説明 |
|:-----------------|:-----------|
| /                | 文字列を検索する（順方向） |
| ?                | 文字列を検索する（逆方向） |
| n                | 順方向へ検索する |
| N                | 逆方向へ検索する |
| *                | カーソルの単語を順方向へ検索する |
| #                | カーソルの単語を逆方向へ検索する |
| %                | 括弧上で括弧に対して検索 |

### 置換、変更

| コマンド             | 説明 |
|:---------------------|:-----------|
| r                    | カーソルの下の文字を置き換える |
| [n] c ターゲット     | ターゲット参考 |
| c [n] ターゲット     | ターゲット参考 |
| :s/[置換前]/[置換後] | 置換前を置換後の文字列に変更する（オプション参考） |

- ターゲット
 - w: 単語の一部を変更する
 - $: 行の一部を変更する

- オプション
 - :s/hoge/fuga/      現在行の最初のhogeをfugaに置換する
 - :s/hoge/fuga/g     現在行の全てのhogeをfugaに置換する
 - :#,#s/hoge/fuga/g  2つの#間で語句を置換する
 - :%s/hoge/fuga/g    ファイルの中の全ての検索語句を置換する
 - :%s/hoge/fuga/gc   置換する度に確認を求める

### 取り消し、繰り返し

| コマンド             | 説明 |
|:---------------------|:-----------|
| u                    | 直前の操作を取りやめる |
| U                    | 行全体の操作を取りやめる |
| Ctrl-R               | 取り消しの取り消し |
| .                    | 直前の操作の繰り返し |

### 外部コマンドの利用

| コマンド             | 説明 |
|:---------------------|:-----------|
| :! [外部コマンド]    | 外部シェルコマンドが実行 |

### マークの利用

ある部分にvim内でマークをつけておくことで、ファイル内で迷ってもすぐに戻ってくることができます。

| コマンド             | 説明 |
|:---------------------|:-----------|
| ma                   | aレジスタ内に現在のカーソルの位置を記憶 |
| 'a                   | aレジスタにマークした場所に移動 |

### レジスタの利用

レジスタを使用することで、コピーした時等に履歴を追って様々な操作ができます。

| コマンド             | 説明 |
|:---------------------|:-----------|
| :reg                 | レジスタ一覧を表示 |
| "0                   | 0レジスタ内の内容を選択 |

- レジスタマスター
例）3つ前にコピーした行を現在の行に貼り付けたい時
  - "2p

## 挿入モード

| コマンド             | 説明 |
|:---------------------|:-----------|
| Ctrl-n               | 補完一覧の次へ移動 |
| Ctrl-p               | 補完一覧の前へ移動 |

## ビジュアルモード(選択)

ビジュアルモードで自由に選択をすることができます。

| コマンド             | 説明 |
|:---------------------|:-----------|
| v                    | ビジュアルモード |
| V                    | 行のビジュアルモード |
| Ctrl-v               | 矩形選択のビジュアルモード |

- 矩形選択マスター  
例）全行の後ろにhogeをつけたい時
 - gg + Ctrl-v + G + $ + A + 入力 + ESC
例）選択行の先頭のhogeを消したい時
 - ^ + Ctrl-v + 選択 + f> + d + ESC