vi コマンドリファレンス
コマンド 動作 備考
モード切替え

i カーソル位置から入力モードへ移行 a カーソル位置の後から入力($a 行末に追加入力=A)
o カーソルの下に、行を追加し入力モードへ O カーソルの上に、行を追加
Esc コマンドモードへ移行
ファイル操作

vi FileName ファイル名を指定して、起動
:w FileName 名前を付けて保存
:w ファイルを上書き保存
:q viを終了
:q! 保存せずに終了
カーソルの移動

k 上へ 5kとすると、5行上へ移動
j 下へ 5jとすると、5行下へ移動
h 左へ 5hとすると、5文字左へ移動
l (小文字のL) 右へ 5lとすると、5文字右へ移動
H 画面最上行の左端へ L は画面最下行の左端へ、M は画面中央の左端へ
^ 行頭へ 0 (数字)も同じ
$ 行末へ
[Enter] 次の行頭へ - は上の行の行頭へ
b 前の単語へ
w 次の単語へ
% 対応する括弧へ
Ctrl + F 1ページ下へ Ctrl + D 半ページ下へ
Ctrl + B 1ページ上へ Ctrl + U 半ページ上へ
9G 先頭から 9行目へ 1ならファイルの先頭
G ファイルの末尾へ
99% ファイル全体の上から99%の位置に飛ぶ
ma aという名前でマークする(a-zA-Z1文字) 小文字はファイル内スコープ
`a マーク a に跳ぶ 'a ならマーク a の行に跳ぶ
`[ 最後に編集した文字へ '[ なら最後に編集した行に跳ぶ
文字の編集

x カーソル位置の文字を削除(バッファに記憶) X カーソルの前の文字を削除 P又はpでペースト
9dd カーソル位置から9行を削除(バッファに記憶) P又はpでペースト
9yy カーソル位置から9行をyankバッファに記憶 P又はpでペースト
p カーソルの後にペースト P はカーソルの前にペースト
dw 1語削除 d$ で行末まで削除
J 次の行を結合 9J で9行結合
u 元に戻す(undo) U は行全体のundo
. (Period) 繰り返し
`ay`b マーク a からにマーク b までをヤンク 'ay'b なら行コピー
検索/置換え

s 1文字を他の文字列に置換 S だと行単位で文字列置換
/検索文字列 下へ検索 nでつぎ(N で逆方向)を検索
?検索文字列 上へ検索 nでつぎ(N で逆方向)を検索
:1,$s/mojiold/mojinew/gc ファイル内の文字を置換え 1=検索開始行、$=検索終了行($は最終行)、
s=置換えoption、
mojiold=検索文字、mojinew=置換え文字、
g=全て置換え(無ければ最初に見付かった文字のみ)
c=置き換える前に確認(無ければ問答無用で置き換え)
キーボードマクロ

qa バッファaにマクロを記録開始 q で記録終了
@a バッファaのマクロを実行
コマンド実行など

:! xxx コマンド xxx を実行
:sh シェル起動(exitで戻る)
:r xxx ファイル xxx の内容を次の行に挿入
:!r xxx コマンド xxx の結果を次の行に挿入
オプションなど

Ctrl + G ファイル名、修正の有無、現在の行数などの情報を表示
:set nu(mber) 行番号表示 set nonu(mber)で非表示
:set showmode 現在のモードを表示する
:set showmatch () や {} の対応の報告をするようになる
:set ignorecase 大文字/小文字の区別なく検索する
:set autoindent 自動インデントモード
:set all すべてのオプションを表示