Vimの基本操作

vimrcいじり過ぎてデフォルトの操作方法を忘れつつあるのでメモ

基本的にノーマルモードからのコマンドです

ファイル操作

入力 動作 備考
:w 内容を保存 :w nameで名前を指定して保存
:q 終了
:q! 強制終了
:wq 保存して終了 ZZ や :xも同様の動作
:qa 全てのタブ、ウィンドウの終了
:qa! 全てのタブ、ウィンドウの強制終了
:wqa 全てのタブ、ウィンドウを保存して終了
:e name nameファイル(フォルダ)を開く
gf カーソル位置のファイル名のファイルを開く
C + w, gf カーソル位置のファイル名のファイルを開く

モード

入力 動作 備考
i 挿入モード
I^1 先頭に移動して挿入モード
a カーソルの後ろで挿入モード
A 末尾に移動して挿入モード
o カーソルのある行の下に新しい行を追加し挿入モード
O^2 カーソルのある行の上に新しい行を追加し挿入モード
cw カーソルの下にある単語を削除して挿入モード
C カーソルから行末までを削除して挿入モード
S 行を削除して挿入モード
R 上書きモード
v ビジュアルモード
V 行選択のビジュアルモード
Ctrl + v 矩形選択のビジュアルモード
ESC ノーマルモードに戻る Ctrl + c, Ctrl + [ も同様
gh 選択モードを開始 vと同様?
gH 選択モードで行選択を開始 Vと同様?
g, Ctrl + h 選択モードで矩形選択を開始 Ctrl + vと同様?
gv 直前の選択範囲を再選択

カーソル移動

入力 動作 備考
gg 最初の行
G 最終行
h 左へひとつ移動
j 下へひとつ移動
k 上へひとつ移動
l^3 右へひとつ移動
gj 表示上の下へひとつ移動
gk 表示上の上へひとつ移動
:(数字) (数字)行目に移動
w 次の単語
W 次の単語
b 前の単語
B 前の単語
f(文字) 文字へ移動
F(文字) 逆方向の(文字)へ移動
; 順方向に繰り返し検索 f, Fに対応
, 逆方向に繰り返し検索 f, Fに対応
0^4 行頭へ移動(インデント無視)
行頭へ移動
$ 行末へ移動
+ 下の行の先頭へ移動
- 上の行の先頭へ移動
% 対応する括弧へ移動
Ctrl + u 半画面上
Ctrl + d 半画面下
ctrl + b 一画面分 上へ移動
ctrl + f 一画面分 下へ移動
zz カーソルが画面中央になるようにスクロール
H 画面上の最初の行へ移動
M 画面上の中央の行へ移動
L 画面上の最後の行へ移動
g; 変更してきた箇所へ移動
g, 変更してきた箇所へ逆方向に移動
gd カーソル位置の単語の定義を現在の関数内で探しジャンプ
gD カーソル位置の単語の定義を現在のファイル内で探しジャンプ

検索

入力 動作 備考
/ 順方向に文字列検索
? 逆方向に文字列検索
n 順方向に繰り返し検索 /, ? に対応
N 逆方向に繰り返し検索 /, ? に対応
* カーソルの下の単語を順方向検索
# カーソルの下の単語を逆方向検索

編集

入力 動作 備考
. 直前の変更を繰り返す
u Undo
Ctrl + r Redo
>> インデントを追加
<< インデントを削除
r (文字) カーソルの下の文字を置換
x カーソルの下の文字を削除
X カーソルの手前の文字を削除
dd 行の削除
d^ カーソルの前から行頭まで削除
d0^4 カーソルの前から行頭まで削除(インデント無視)
D カーソル下から行末まで削除
J 選択行の連結
Ctrl + a カーソルの下にある数字を1つインクリメント
Ctrl + x カーソルの下の数字を1つデクリメント
viw カーソルが重なっている単語を選択
('で囲われている場所で) vi' '内を全て選択 'は適宜変更
~ カーソルの下の文字の大文字小文字を入れ替え
gu 選択した文字を小文字に
gU 選択した文字を大文字に
= 選択行のオートインデント

コピー&ペースト

入力 動作 備考
y コピー
yy 今いる行をコピー
p ペースト

ウィンドウ

入力 動作 備考
:split 画面を上下に分割する :spに省略可
:vsplit 画面を左右に分割する :vsに省略可
:hide 現在のウィンドウを閉じる
:only 現在のウィンドウ以外を閉じる
Ctrl +w, h 左のWindowへ移動
Ctrl + w, l ^3 右のWindowへ移動
Ctrl + w, k 上のウィンドウへ移動
Ctrl + w, h 下のウィンドウへ移動
Ctrl + w, H ウィンドウ自体を左へ移動
Ctrl + w, J ウィンドウ自体を下へ移動
Ctrl + w, K ウィンドウ自体を上へ移動
Ctrl + w, L ウィンドウ自体を右へ移動

タブ

入力 動作 備考
:tabnew 新規タブ
:tabedit filename 新しいタブでfilenameへ開く。引数がなければ新しいタブを開く :tabe に省略可
:tabnext 次のタブへ切替。引数(数値)があれば、その番号のタブを開く(:tabn 1 とか) :tabn に省略可
:tabNext, :tabprevious 前のタブへ切替。引数があればその数値分先の左のタブへ切替 それぞれ:tabN, :tabp に省略可
:tabrewind, :tabfirst 左端のタブへ切替 :tabrewind は :tabr に省略可
:tablast 右端のタブへ切替 :tabl に省略可
:tabclose 今いるタブを閉じる :tabc に省略可
:tabonly 今いるタブ以外を閉じる :tabo に省略可
gt 次のタブへ切替 (数字)gt で(数字)番目のタブへ切り替え
gT 前のタブへ切替 (数字)gT で(数字)番目のタブへ切り替え

その他

入力 動作 備考
:!(コマンド) コマンドをシェルで実行
ga カーソル位置の文字のASCIIコード値を表示する