vimコマンド

## カーソル移動系

#### 文字単位

|コマンド|説明|
|:---:|---|
|h|左に移動|
|j|下に移動|
|k|上に移動|
|l|右に移動|

#### 単語単位

|コマンド|説明|
|:---:|---|
|w|1単語先に移動|
|b|1単語前に移動|
|e|単語の末尾に移動|

#### 空白区切り単位

|コマンド|説明|
|:---:|---|
|W|次の空白に移動|
|B|前の空白に移動|
|E|次の空白の前の単語の末尾に移動|

#### 行単位

|コマンド|説明|
|:---:|---|
|0|行頭に移動|
|^|空白以外の行頭に移動|
|$|行末に移動|

#### 文単位

|コマンド|説明|
|:---:|---|
|)|1文分上に移動|
|(|1文分下に移動|

#### 段落単位

|コマンド|説明|
|:---:|---|
|}|1段落分上に移動|
|{|1段落分下に移動|


#### ファイル単位
|コマンド|説明|
|:---:|---|
|gg|ファイルの先頭に移動|
|G|ファイルの末尾に移動|

## 画面移動系

|コマンド|説明|
|:---:|---|
|\<C-b\>|1画面分上に移動|
|\<C-f\>|1画面分下に移動|
|\<C-u\>|半画面分上に移動|
|\<C-d\>|半画面分下に移動|
|H|画面の最上行に移動|
|M|画面の中央行に移動|
|L|画面の最下行に移動|


## スクロール系

|コマンド|説明|
|:---:|---|
|zz|現在の行が画面の中央になるようにスクロールする|
|zt|現在の行が画面の最上行になるようにスクロールする|
|zb|現在の行が画面の最下行になるようにスクロールする|
|\<C-y\>|1行上にスクロールする|
|\<C-e\>|1行下にスクロールする|

## 検索系

#### 行単位

|コマンド|説明|
|:---:|---|
|f{char}|カーソルから右側にある{char}に移動|
|F{char}|カーソルから左側にある{char}に移動
|;|直前の行単位検索を繰り返す|
|,|直前の行単位検索を逆方向に繰り返す|

#### ファイル単位

|コマンド|説明|
|:---:|---|
|\*|カーソル位置の単語を下方向に検索|
|#|カーソル位置の単語を上方向に検索|
|g\*|カーソル位置の単語(部分一致)を下方向に検索|
|g#|カーソル位置の単語(部分一致)を上方向に検索|
|%|対応するカッコに移動|
|/{patter}|{pattern}に部分一致する箇所を下方向に検索|
|?{patter}|{pattern}に部分一致する箇所を上方向に検索|
|n|直前のファイル単位検索を繰り返す|
|N|直前のファイル単位検索を逆方向に繰り返す|


## ウィンドウ操作系

#### ウィンドウ分割

|コマンド|説明|
|:---:|---|
|\<C-w\>s|水平方向に分割 (split)|
|:sp|水平方向に分割|
|\<C-w\>v|垂直方向に分割 (vertical)|
|:vs|垂直方向に分割|
|:new|水平方向に分割して新規ファイルを開く|
|:vnew|垂直方向に分割して新規ファイルを開く|

#### ウィンドウ移動

|コマンド|説明|
|:---:|---|
|\<C-w\>h|左のウィンドウに移動する|
|\<C-w\>j|下のウィンドウに移動する|
|\<C-w\>k|上のウィンドウに移動する|
|\<C-w\>l|右のウィンドウに移動する|
|\<C-w\>w|次のウィンドウに移動する|

#### ウィンドウの入れ替え

|コマンド|説明|
|:---:|---|
|\<C-w\>x|現在のウィンドウと次のウィンドウを入れ替える (exchange)|

#### ウィンドウサイズの変更

|コマンド|説明|
|:---:|---|
|\<C-w\>\_|垂直に最大化する|
|\<C-w\>&#124;|水平に最大化する|
|\<C-w\>=|サイズを揃える|
|\<C-w\>>|幅を増やす|
|\<C-w\><|幅を減らす|
|\<C-w\>+|高さを増やす|
|\<C-w\>-|高さを減らす|


## 操作した後にインサートモードに切り替える系

|コマンド|説明|
|:---:|---|
|a|カーソルの後ろに移動してインサートモード|
|A|現在の行の行末に移動してインサートモード|
|I|現在の行の行頭に移動してインサートモード|
|c{motion}|{motion}で指定したテキストを削除してインサートモード|
|caw| カーソル位置の単語を削除してインサートモード|
|C|カーソル位置から行末までを削除してインサートモード|
|s|カーソル位置の1文字を削除してインサートモード|
|S|現在の行のテキストを全て削除してインサートモード (`cc`と同じ)|
|o|現在の行の下に新しい行を挿入してインサートモード|
|O|現在の行の上に新しい行を挿入してインサートモード|


## ビジュアルモード

| コマンド | 説明                               |
|:--------:|------------------------------------|
|     v    | 文字選択モード                     |
|     V    | 行選択モード                       |
|  \<C-v\> | 矩形選択モード                     |
|    gv    | 直前の選択範囲を再度選択する       |
|     o    | 選択範囲のもう一方の端点に移動する |
|viw| カーソル位置の1単語を選択|


## 削除系

|コマンド|説明|
|:---:|---|
|d{motion}|{motion}で指定したテキストを削除|
|dd| 現在の行を削除|
|daw| カーソル位置の単語を削除|
|D|カーソル位置から行末までを削除|
|x|カーソル位置の1文字を削除|
|X|カーソル位置の1文字前を削除|
|J|現在の行と次の行を連結|


## 置換系
| コマンド | 説明                              |
|:--------:|-----------------------------------|
|  r{char} | カーソル位置の1文字を{char}に置換 |
|Vr-| 現在の行の全てのテキストを`-`に置換|
|     R    | Replaceモードに切り替える         |
|:%s/A/B/g|ファイル内の全てのAをBに置換|



## ヤンク・ペースト・アンドゥ

| コマンド | 説明                  |
|:--------:|-----------------------|
|y{motion}| {motion}で指定したテキストをヤンク|
|yaw|カーソル位置の単語をヤンク|
|Y| 現在の行のテキストをヤンク (`yy`と同じ)|
|p| カーソルの後ろにペースト|
|P| カーソルの前にペースト|
|u| アンドゥ(1つ戻る)|
|\<C-r\>| アンドゥをアンドゥ|



## インデント系

| コマンド | 説明                  |
|:--------:|-----------------------|
|    >>    | インデントを1段下げる |
|    <<    | インデントを1段上げる |
|     =    | インデントを揃える    |
|gg=G| ファイル全体のインデントを揃える|





## マーク機能

|      コマンド      | 説明             |
|:------------------:|------------------|
|      m[a-zA-Z]     | markする         |
|      '[a-zA-Z]      | マークに移動     |
|       :marks       | マーク一覧       |
| :delmarks [a-zA-Z] | マークを削除     |
|     :delmarks!     | マークを一括削除 |