Vimの1文字コマンドをまとめてみる (記号・特殊キー・Ctrl編)

# 概要

このページは、Vimの1文字で操作内容が決まるコマンドをフォーカスしてまとめたページです。
アルファベット編の続きとなります（背景・1文字コマンドの定義などは下記ページを参照してください）。

**前ページ：アルファベット編**
[Vimの1文字コマンドをまとめてみる（アルファベット編）](http://qiita.com/jader/items/17c07155d3230d51823d)

このページでは、**ノーマルモードで記号・特殊キー・Ctrl同時押しから始まる1文字コマンド**をまとめる。

# 予備知識

* {motion}: カーソル移動系のコマンドを表す。具体的には、表内で**太字**で示されているコマンド (hjkl...) などを表す
* {char}: 任意の1文字を表す
* 行頭・行末：ファイル1行の始めと終わり
* 文頭・文末：vimにおける"sentence"の始めと終わり。sentenceは.!?のいずれかで終わる。詳細は```:help sentence ```参照
* 文節：vimにおける"paragraph"。空行の後から始まる文章のまとまり。詳細は```:help paragraph```参照

# ノーマルモード：記号・特殊キー編

**太字**で示したコマンドは {motion} に対応するコマンドである。

| コマンド | 説明 |
|:--|:--|
| **\<BS>** | カーソルを左へ移動（コマンドhと同様） |
| **\<NumLock>** | カーソルを下へ移動（コマンドjと同様） |
| **\<Space>** | カーソルを右へ移動（コマンドlと同様） |
| **0** | カーソルを行頭へ移動（インデントの影響を受けない） |
| **^** | カーソルを行頭へ移動（空白文字を除いた最初の文字） |
| **$** | カーソルを行末へ移動 |
| **-** | カーソルを1行上の行頭へ移動 |
| **\<CR>** | カーソルを1行下の行頭へ移動 |
| **+** | カーソルを1行下の行頭へ移動（コマンド<CR>と同様） |
| **_** | （コマンド前の数字Nを指定したとき）カーソルをN-1行下の行頭へ移動。つまり ```_``` はカレント行の先頭へ移動 |
| **%** | カーソル下、もしくは右方向にある次の括弧に対応する括弧へカーソルを移動|
| **(** | カーソルをひとつ前の文頭へ移動 |
| **)** | カーソルをひとつ次の文頭へ移動 |
| **{** | カーソルをひとつ前の文節の頭へ移動 |
| **}** | カーソルをひとつ後ろの文節の頭へ移動 |
| **&#124;** | カーソルをカレント行の1文字目に移動。コマンド前に数字Nを指定した場合はN文字目 |
| **'{a-zA-Z0-9}** | カーソルをマーク{a-zA-Z0-9}の行頭へ移動 |
| **`{a-zA-Z0-9}** | カーソルをマーク{a-zA-Z0-9}へ移動 |
| . | 最後の変更を再実行 |
| @{a-z} | レジスタ{a-z}に記録されたコマンドを実行 |
| /{pattern}<CR> | 文字列{pattern}を下方向に検索し、カーソルを次へ移動 |
| ?{pattern}<CR> | 文字列{pattern}で上方向に検索し、カーソルを前へ移動 |
| **\*** | カーソル下の単語で検索し、ひとつ次の同一単語にカーソルをに移動 |
| **#** | カーソル下の単語で検索し、ひとつ前の同一単語にカーソルをに移動 |
| **;** | 最後に行った```f, t, F, Tコマンド```での検索を再実行 |
| **,** | 最後に行った```f, t, F, Tコマンド```での検索を、前回と反対方向に再実行 |
| <{motion} | {motion}で指定した行全体を左へ移動（移動量は```shiftwidth```） |
| ={motion} | {motion}で指定した行のインデントを整える（移動量は```shiftwidth```） |
| >{motion} | {motion}で指定した行全体を右へ移動（移動量は```shiftwidth```） |
| ~ | ```tildeop```がオフのとき、カーソル下の文字の小文字/大文字を切り替える |
| ~{motion} | ```tildeop```がオンのとき、{motion}で指定したテキストの小文字/大文字を切り替える |
| **\<Tab>** | カーソルをジャンプリストに記録されたひとつ次の位置へ移動 |
| \<F1> | helpを開く |
| **:** | Ex commandモード |

# ノーマルモード：Ctrl編

**太字**で示したコマンドは {motion} に対応するコマンドである。

| コマンド | 説明 |
|:--|:--|
| Ctrl-a | カーソル下の数字を+1。もしカーソル下が数字ではない場合は、カーソルを右方向にある次の数字へ移動した後で+1 |
| **Ctrl-b** | 画面とカーソルを画面1枚上へ移動。カーソルは移動先の行頭へ移動 |
| Ctrl-c | 現在の（検索）コマンドを中止 |
| Ctrl-d | 画面とカーソルを```scroll（デフォルト：画面半分の行数）```だけ下へ移動 。カーソルは移動先の行頭へ移動 |
| Ctrl-e | 画面のみを1行下にスクロール。カーソルは移動しない |
| **Ctrl-f** | 画面とカーソルを画面1枚下へ移動。カーソルは移動先の行頭へ移動|
| Ctrl-g | ファイル名・行数・カーソル位置を表示 |
| **Ctrl-h** | カーソルを左へ移動（コマンドhと同様） |
| **Ctrl-i** | カーソルをジャンプリストに記録されたひとつ次の位置へ移動（コマンド\<Tab>と同様） |
| **Ctrl-j** | カーソルを下へ移動（コマンドjと同様） |
| Ctrl-l | 画面を再描画 |
| **Ctrl-m** | カーソルを1行下の文頭へ移動（コマンド\<CR>と同様） |
| **Ctrl-n** | カーソルを下へ移動（コマンドjと同様） |
| **Ctrl-o** | カーソルをジャンプリストに記録されたひとつ前の位置へ移動 |
| **Ctrl-p** | カーソルを上へ移動（コマンドkと同様） |
| Ctrl-r | リドゥ |
| Ctrl-t | カーソルをタグスタック内のひとつ前の位置へ移動 |
| Ctrl-u | 画面とカーソルを```scroll（デフォルト：画面半分の行数）```だけ上へ移動 。カーソルは移動先の行頭へ移動 |
| Ctrl-v | blockwise Visualモード |
| Ctrl-x | カーソル下の数字を-1。もしカーソル下が数字ではない場合は、カーソルを右方向にある次の数字へ移動した後で-1 |
| Ctrl-y | 画面のみを1行上にスクロール。カーソルは移動しない |
| Ctrl-z | Vimをサスペンド |
| Ctrl-] | カーソル下のキーワードでカーソルをタグジャンプさせる |
| Ctrl-^ | 代替ファイル（ひとつ前に編集したファイル）に移動 |

※ 1文字コマンドが存在しないCtrl-アルファベット

Ctrl-w {char} : Window commandに続く
Ctrl-k, Ctrl-q, Ctrl-s : 単体ではなし

# 動作がわかりにくい 数字+1文字コマンド

コマンドの前に数字を加えることで、繰り返し回数や行数の指定できる。
しかし、その結果がわかりにくいコマンドがいくつかあるため、ここではそのコマンドをまとめる。
なおここでは、コマンド前に付与した数字を N とする。

### 数字をつけて実行できないコマンド

* 0 : カーソルを行頭へ移動（インデントの影響を受けない）

### 数字をつけても操作内容が変化しないコマンド

* \<F1> : helpを開く
* : (colon) : Ex commandモード
* Ctrl-v : blockwise Visualモード
* Ctrl-z : Vimをサスペンド

---

### $: カーソルを文末へ移動
N-1行下の行末へ移動

カーソル下の文字：
```The quick brown
fox jumps
over the lazy dog```の```T```
コマンド：```3$```
↓
移動先の文字: ```g```

### %: カーソル下、もしくは右方向にある次の括弧に対応する括弧へカーソルを移動
別コマンドに変化するので注意

コマンド：```80%``` → ページ全体の行数の80パーセント目にあたる行へカーソルを移動

### <{motion}, >{motion}:	{motion}で指定した行全体を移動（移動量はshiftwidth）
「{motion}で指定→移動」をN回連続で行う（誤：移動量がN倍になる）

カーソル下の文字：
```The quick brown
　
fox jumps
　
over the lazy dog```の```T```
コマンド：```2>}``` ※ 文節2つ分の範囲を右に移動
↓
```　　The quick brown
　
　　fox jumps
　
over the lazy dog
```

### Ctrl-d, Ctrl-u: 画面とカーソルを```scroll（デフォルト：画面半分の行数）```だけ移動 。カーソルは移動先の行頭へ移動
scroll=Nに設定した後、画面をスクロール。
次の呼び出し時にも、最後に設定したscroll値が使用されるため、スクロール量が変化

コマンド：```5 Ctrl-u Ctrl-u``` → 画面とカーソルが計10行上（5行 x 2回）へ移動

# 最後に

より正確な情報は ```:help コマンド``` or ```:h コマンド``` で確認してください。
間違い・誤解しやすい表現がある場合は、ご指摘 or 編集リクエスト していただけると幸いです。