Vim

モード

i 挿入モードへ
o 新しい行を追加し挿入モードへ
R 置き換え(上書き)モードへ
ESC 編集モードへ

カーソル移動

h
j
k
l
Ctrl+d 半画面下に移動
Ctrl+u 半画面上に移動
$ 行末に移動
^ / 0 行頭に移動
w 次の単語に移動
zz カーソルが画面中央になるようにスクロール
b 前の単語に移動
f(文字) 今カーソルがある行のその(文字)に移動
F(文字) 今カーソルがある行のその(文字)に移動(逆向き)
% 対応する括弧に移動
Ctrl+g ファイル中の現在の場所を知る

編集

J 行の連結
D カーソル位置から行末まで削除
yy / Y カーソルのある行をコピー
dd / D カーソルのある行を切り取り
x カーソルの下にある文字を削除
p 貼り付け
u アンドゥ
Ctrl+r リドゥ

ファイル

:q 終了(:q!で保存せずに強制終了)
:w file fileという名前で保存
ZZ 保存して閉じる
:set fileencoding=utf-8 文字コードの指定
:cd path カレントディレクトリをpathに設定
:pwd カレントディレクトリを表示
:help index vimコマンドの全目次を見る
gf カーソル位置にある文字列をファイル名とみなして開く

検索と置換

/word wordを検索(nで次の候補、Nで前の候補)
?word wordを逆方向に検索
* カーソル位置にある単語を検索
:%s/four/4/g 単語の置換(fourを4へ置換)
:set ignorecase 大文字小文字を無視(:set noignorecaseで戻る)
:set hlsearch ヒット結果のハイライト表示

領域選択

v 領域選択スタート
Ctrl+v 矩形選択スタート
Shift+v 行選択スタート
y コピー
d 切り取り
= 選択領域をオートインデント

タグ移動

:tag function 関数 functionへ移動
:tags タグリストを表示
:tag タグリストの先頭へ移動
Ctrl+] カーソル行の関数定義位置へ移動
Ctrl+T 直前のタグへ戻る

ウィンドウ

:split 画面を上下に分割する
:vsplit 画面を左右に分割する
:close ウィンドウを閉じる
:new filename 新規ウィンドゥ作成(垂直方向)
:vnew filename 新規ウィンドゥ作成(水平方向)
:e filename 今いるウィンドゥにファイルを開く
:q ウィンドゥの削除
:hide ウィンドゥを隠す(バッファには残る)
Ctrl+w + ウィンドゥを拡大
Ctrl+w - ウィンドゥを縮小
Ctrl+w w 別のウィンドゥへ移動
Ctrl+w k 上のウィンドゥへ移動
Ctrl+w j 下のウィンドゥへ移動
Ctrl+w h 左のウィンドゥへ移動
Ctrl+w l 右のウィンドゥへ移動
Ctrl+w r 左右/上下のウィンドゥを入れ替え

buffer(バッファ管理)

:ls バッファ一覧を表示
b buffnum 今いるwindowに特定のバッファを呼び出す
:bd buffnum そのバッファを削除
:bn 次のバッファに移動
:bp 前のバッファに移動

register(レジスタ管理)

"ay 選択範囲をレジスタaに保存
"ayy 今いる行をレジスタaに保存
"ap レジスタaの内容をカーソル位置にペースト
:reg レジスタに格納されている情報を一覧表示

mark(マーク)

ma 現在のカーソル位置をマーク名aに保存
'a マーク名 aの位置に移動
:marks マークの一覧を表示する

folding(折りたたみ)

zf 選択領域を折りたたむ
スペース 折りたたみを展開する

word completion(単語補完)

Ctrl+p 単語補完(前方検索)
Ctrl+n 単語補完(後方検索)

recording(操作記憶)

qa 操作の記録を開始し、レジスタaに保存する
q 操作の記録を終了する
@a レジスタaに保存された操作を再生する
5@a レジスタaに保存された操作を5回再生する

外部コマンドとの連携

:!command 外部コマンド実行(領域指定すると出力も取込)
:r!command 外部コマンド実行(カーソル位置へ出力挿入)