Vim で使うショートカットの内、初学者が真っ先に覚えるものを除いて紹介します。使用頻度は高くないかもしれませんが、扱えると便利です。
1. カーソル移動
| ショートカット |
機能説明 |
H / M / L
|
画面の最上端 (High) / 中央 (Middle) / 最下端 (Low) にジャンプ |
zt / zz / zb
|
現在のカーソル行を、画面の最上端 / 中央 / 最下端にスクロール |
Ctrl + f / Ctrl + b
|
1画面分 前にスクロール / 後ろにスクロール |
Ctrl + d / Ctrl + u
|
半画面分 前にスクロール / 後ろにスクロール |
ge / gE
|
前の単語の「末尾」に移動(gE は区切り文字を無視) |
% |
対応する括弧( (), {}, [] )の相方にジャンプ |
f{char} / F{char}
|
行内で次(前)にある指定した文字 {char} にジャンプ |
t{char} / T{char}
|
行内で次(前)にある指定した文字 {char} の「1文字前」にジャンプ |
; / ,
|
f や t の移動を順方向 / 逆方向に繰り返す |
* / #
|
カーソル下の単語を、次(前)に向かって検索する |
gd |
カーソル下の変数・関数の定義元(Local Declaration)にジャンプ |
'' (シングルクォート2回) |
直前にいたカーソル位置(ジャンプ元)に戻る |
2. テキスト編集・オペレータ
| ショートカット |
機能説明 |
. (ドット) |
直前に行った編集操作(インサートモードの入力含む)を繰り返す |
I / A
|
行頭の最初の非空白文字から挿入 / 行末から挿入 |
o / O
|
カーソルの下 / 上に新しく行を挿入してインサートモード |
s / S
|
カーソル位置の1文字を消去して挿入 / 行全体を消去して挿入 |
C |
カーソル位置から「行末まで」を消去してインサートモード(c$ と同じ) |
D |
カーソル位置から「行末まで」を削除(d$ と同じ) |
g~ |
選択範囲またはモーション範囲の文字の「大文字・小文字」を反転 |
gu / gU
|
モーション範囲をすべて 小文字化 / 大文字化 |
J |
カーソル行と、その下の行を1行に結合(スペースを自動挿入) |
gJ |
スペースを挟まずに、下の行と結合 |
Ctrl + a / Ctrl + x
|
カーソル位置の数値を 1 加算(インクリメント) / 1 減算(デクリメント) |
>> / <<
|
カレント行を右(インデント深く) / 左(インデント浅く)にシフト |
== |
カレント行のインデントを自動で整形する |
3. ビジュアルモード・矩形選択
| ショートカット |
機能説明 |
Ctrl + v |
矩形(ブロック)ビジュアルモードを開始(縦方向の選択) |
gv |
最後に選択していたビジュアルモードの範囲を再選択 |
o (ビジュアルモード中) |
選択範囲の「開始位置」と「終了位置」のカーソルを入れ替える |
I{text}<Esc> (矩形選択中) |
選択した複数行の先頭に、同じ文字列 {text} を一括挿入 |
A{text}<Esc> (矩形選択中) |
選択した複数行の末尾に、同じ文字列 {text} を一括挿入 |
r{char} (ビジュアルモード中) |
選択範囲の文字をすべて指定した1文字 {char} に置き換える |
4. 検索・置換・レジスタ・マクロ
| ショートカット |
機能説明 |
/{pattern}/e |
検索時、マッチした文字列の「末尾」にカーソルを合わせる |
:%s/foo/bar/gc |
ファイル全体の foo を bar に**確認付き(c)**で置換 |
& |
直前に行った :s (置換) コマンドをカレント行に再適用 |
"{register}y |
指定したレジスタ(a-z など)にテキストをヤンク(コピー) |
"{register}p |
指定したレジスタからテキストを貼り付け |
"0p |
直前にヤンクしたテキストだけを貼り付け(d で上書きされない) |
q{register} |
マクロの記録を開始(qa でレジスタ a に記録開始、再度 q で終了) |
@{register} |
記録したマクロを実行(@a で実行、@@ で直前のマクロを再実行) |
q: |
コマンドラインの履歴をウィンドウとして開き、編集・実行する |
5. ウィンドウ・タブ・画面分割
| ショートカット |
機能説明 |
:sp (:split) |
画面を横に分割 |
:vsp (:vsplit) |
画面を縦に分割 |
Ctrl + w ➔ h / j / k / l
|
分割されたウィンドウを 左 / 下 / 上 / 右 に移動 |
Ctrl + w ➔ w
|
次のウィンドウへ循環移動 |
Ctrl + w ➔ r
|
分割ウィンドウの配置をローテーション(入れ替え) |
Ctrl + w ➔ _ (アンダースコア) |
現在のウィンドウの「高さ」を最大化 |
Ctrl + w ➔ ` |
` (パイプ) |
Ctrl + w ➔ =
|
分割されたすべてのウィンドウのサイズを均等にする |
:tabnew |
新しいタブページを開く |
gt / gT
|
次のタブ / 前のタブ に切り替える |