デフォルトのマッピングを調べる方法
コマンドラインで以下のコマンドを実行すればそのキーにどのような処理が割り当てられているか調べることができます.ちなみに h
は help
という意味です.
以下のコマンドでノーマルモードで q
Q
<C-q>
<Tab>
を押したときの動作が調べられます.<C-q>
は コントロールキー + q
という意味です.
:hq:h Q
:h CTRL-q:h<Tab>
以下のコマンドでインサートモードで <C-q>
<Tab>
を押したときの動作が調べられます.
(当たり前ですがインサートモードで q
Q
を押したときは q
Q
が入力されます)
:h i_CTRL-q:h i_<Tab>
ビジュアルモードは上のコマンドの i_
の部分を v_
に変えれば調べることができます.
コマンドラインモードについても c_
に変えれば調べることができます.
ノーマルモードのデフォルトマッピングの表
g
, z
, Z
, [
, ]
, <c-w>
は続くキー次第で内容が多岐にわたるので prefix とさせていただきました
word は空白もしくはアンダーバーを除く特殊文字で区切られたひと単語でを表現していて,
WORD は空白区切りのひとまとまりを表現しています.
c
, d
, y
は続くオペレーター(テキストオブジェクトや移動コマンド)によって動作が変わるので
共通する動作 change
, delete
, yank
と書きました.
map | default |
---|---|
a | カーソルの後ろに挿入 |
A | 行末に挿入 |
<C-a> | インクリメント |
b | word のはじめに後方移動 |
B | WORD のはじめに後方移動 |
<C-b> | 1ページ上にスクロール |
c | change |
C | 行末まで変更 |
<C-c> | 現在の(検索)コマンドを中止 |
d | delete |
D | 行末まで削除 |
<C-d> | 半ページ下にスクロール |
e | word の終わりに前方移動 |
E | WORD の終わりに前方移動 |
<C-e> | ページを下に1行スクロール |
f | 指定した char へ前方移動 |
F | 指定した char へ後方移動 |
<C-f> | 1ページ下にスクロール |
g | prefix |
G | 指定した行へジャンプ |
<C-g> | ステータスを表示 |
h | カーソルを左へ移動 |
H | 画面の1番上の行に移動 |
<C-h> | カーソルを左に移動 |
i | カーソルの前に挿入 |
I | 行頭に挿入(非空白) |
<C-i> | <Tab> と同じキーコード |
j | カーソルを下に移動 |
J | カーソル行と下の行を結合 |
<C-j> | 1行下に移動 |
k | カーソルを上に移動 |
K | カーソル下の word を man |
<C-k> | ダイグラフの入力 |
l | カーソルを右へ移動 |
L | 画面の1番下の行に移動 |
<C-l> | 画面を再描画 |
m | マーク |
M | 画面の中央に移動 |
<C-m> | <CR> と同じキーコード |
n | 前方の検索結果に移動 |
N | 後方の検索結果に移動 |
<C-n> | 次の行に移動 |
o | カーソル行の下に行を挿入 |
O | カーソル行の上に行を挿入 |
<C-o> | 前のジャンプ位置にジャンプ |
p | 前方にペースト |
P | 後方にペースト |
<C-p> | 前の行に移動 |
q | マクロ登録 |
Q | Ex モードに切り替え |
<C-q> | ビジュアル矩形モード |
r | 1文字置き換え |
R | 置き換えモード |
<C-r> | やり直し |
s | 1文字削除して挿入モード |
S | 1行削除して挿入モード |
<C-s> | 特になし? |
t | 指定した char の前へ前方移動 |
T | 指定した char の後へ後方移動 |
<C-t> | 次のタグにジャンプ |
u | 取り消し |
U | 変更ありの取り消し |
<C-u> | 半ページ上にスクロール |
v | ビジュアルモード |
V | 1行ビジュアルモード |
<C-v> | 矩形ビジュアルモード |
w | word のはじめに前方移動 |
W | WORD のはじめに前方移動 |
<C-w> | ウィンドウ関連の prefix |
x | カーソル下の文字を削除 |
X | カーソルの前の文字を削除 |
<C-x> | ディクリメント |
y | yank |
Y | 1行ヤンク |
<C-y> | ページを上へ1行スクロール |
z | prefix |
Z | prefix |
<C-z> | vim をサスペンド |
<Esc> | <Esc> |
<Tab> | 次のジャンプ位置にジャンプ |
<S-Tab> | 特になし? |
<BS> | カーソルを左に移動 |
<CR> | 下の行頭の非空白文字に移動 |
<Space> | カーソルを右に移動 |
! | 外部のプログラムを実行 |
@ | マクロの再生 |
# | カーソル下の単語を後方検索 |
$ | 行末に移動 |
% | 対応するかっこに移動 |
^ | 行頭に移動(非空白) |
& | 置き換えを繰り返す |
* | カーソル下の単語を前方検索 |
( | 文後方に移動 |
) | 文前方に移動 |
0 | 行頭に移動(空白でも) |
- | 上の行頭の非空白文字に移動 |
_ | -1 行下の非空白文字に移動 |
= | インデントを揃える |
+ | 下の行頭の非空白文字に移動 |
\ | デフォルト <LocalLeader> |
| | カーソル行の指定した列へ移動 |
` | マーク位置へジャンプ |
~ | 大文字,小文字を切り替え |
[ | 後方移動系コマンドの prefix |
] | 前方移動系コマンドの prefix |
{ | 段落後方に移動 |
} | 段落前方に移動 |
; | f char の順方向繰り返し |
: | コマンドラインモード |
' | マーク位置の行頭へジャンプ |
" | レジスタの指定 |
, | f char の逆方向繰り返し |
. | 繰り返し |
< | インデントを左にずらす |
> | インデントを右にずらす |
/ | 前方検索 |
? | 後方検索 |
<Down> | カーソルを下に移動 |
<Up> | カーソルを上に移動 |
<Right> | カーソルを右に移動 |
<Left> | カーソルを左に移動 |
<S-Down> | 1ページ下にスクロール |
<S-Up> | 1ページ上にスクロール |
<S-Right> | word のはじめに前方移動 |
<S-Left> | word のはじめに後方移動 |
<C-Down> | 特になし |
<C-Up> | 特になし |
<C-Right> | WORD のはじめに前方移動 |
<C-Left> | WORD のはじめに後方移動 |
<C-S-Down> | 特になし |
<C-S-Up> | 特になし |
<C-S-Right> | 特になし |
<C-S-Left> | 特になし |
<C-@> | <C-Space> と同じキーコード |
<C-[> <C-#> | <esc> と同じキーコード |
<C-\> <C-$> | 特になし? |
<C-]> <C-%> | カーソル下の定義にジャンプ |
<C-^> | 1個前のファイルに戻る |
<C-_> <C-&> <C-/> | 特になし? |
<C-*> | <BS> と同じキーコード |
マッピングについて
vim は ~/.vimrc
に以下のような記述を(もしくはコマンドラインで実行)することで<キー>
を押したときに <処理>
を実行することができます.
" ノーマルモード
nnoremap <キー><処理>" インサートモード
inoremap <キー><処理>" ヴィジュアルモード
xnoremap <キー><処理>" コマンドラインモード
cnoremap <キー><処理>
詳しくは日本語ドキュメントを参照して欲しいのですが,ともかくあるキーに特定の処理をさせることができます.
nnoremap
を nmap
とすると <処理>
が再マップされ,マップを入れ子にしたり再帰的にすることができます.
しかし vim にはデフォルトでほとんどのキーに動作が割り振られています.よって自分のオリジナルマッピングの際にどのキーを使えばいいのかがわかりにくいです.表で使わないなと判断したキーにマッピングを割り振るといいと思います.