□起動 vi file1 file2 file3 file1 file2 file3・・・を開いた状態で起動 vi +n file fileのn行目にカーソルを移動した状態で起動 vi +/string file fileの検索文字列(string)と一致する最初の行へカーソルを移動した状態で起動
□カーソル移動 k (^p、↑) 上に移動 j (^n、↓) 下に移動 h ([BackSpace]、←) 左に移動 l ([Space]、→) 右に移動 H 画面の最上行に移動 M 画面の中央行に移動 L 画面の最下行に移動 G ファイルの最下行に移動 nH 画面の上から指定した数(n)行目に移動 nL 画面の下から指定した数(n)行目に移動 nG ファイルの上から指定した数(n)行目に移動 0 現在行の先頭に移動 ^ 現在行の空白を除いた先頭に移動 $ 現在行の末尾に移動 b 単語の先頭に移動 e 単語の末尾に移動 w 次の単語の先頭に移動 - 上の行の先頭へ移動 + 下の行の先頭へ移動 ( 前の文章の先頭に移動 ) 次の文章の先頭に移動 { 前の段落の先頭に移動 } 次の段落の先頭に移動 [[ 前の節または関数の先頭に移動 ]] 次の節または関数の先頭に移動 % 対応する(){}[]に移動
□画面操作 ^b 上に1画面スクロール ^f 下に1画面スクロール ^u 上に半画面スクロール ^d 下に半画面スクロール ^y 上に1行スクロール ^e 下に1行スクロール z[ENTER] カーソル行を画面の最上行までスクロール z. カーソル行を画面の中央行までスクロール z- カーソル行を画面の最下行までスクロール ^g ファイル内の現在位置を表示 ^l 画面の再描画 ^f 画面の再描画
□検索 /string 指定した文字列(string)を末尾方向に検索 ?string 指定した文字列(string)を先頭方向に検索 n 検索を繰り返す N 現在とは反対方向に検索を繰り返す / 検索を順方向へ繰り返し ? 検索を逆方向へ繰り返し /string/+n 検索文字列のn行後へ移動 .?string?-n 検索文字列のn行前へ移動 % 現在位置の括弧に対応する括弧へ移動 fx 現在の行でxを検索し順方向へ移動 Fx 現在の行でxを検索し逆方向へ移動 tx 現在の行でxを順方向に検索し、その前の文字へ移動 Tx 現在の行でxを逆方向に検索し、その後の文字へ移動 , 最後のf,F,t,Tによる検索の方向を反転 ; 最後の文字検索(f,F,t,T)を繰り返す
□入力・変更 i カーソルの左へ文字列を挿入 I 行の先頭に文字列挿入 a カーソルの右へ文字列を追加 A 行末に文字列を追加 o カーソル行の次に新しい行として文字列を追加 O カーソル行の前に新しい行として文字列を追加 s カーソルのある1文字を変更 S 行全体を置き換え r カーソルがある1文字を上書き R カーソルがある1行を上書き p バッファの内容をカーソルの下へペースト P バッファの内容をカーソルの上へペースト cw カーソル位置の単語を変更 c^ カーソル位置から行頭までを変更 c$ C カーソル位置から行末までを変更
□削除 x カーソル位置の文字を削除 nx カーソル左位置の文字をn個削除 dstring カーソル位置から指定文字列(string)までを1回削除 ndstring カーソル位置から指定文字列(string)までをn回削除 dd 一行削除 ndd カーソル行をn回削除 d^ カーソル位置から行頭までを削除 d$ D カーソル位置から行末までを削除 dw カーソル位置の単語を削除
□複写 nystring カーソル位置から指定文字列(string)までをn回バッファにコピー nyw カーソル位置の単語からn単語分バッファへコピー yy Y カーソル行をバッファにコピー nyy カーソル行をn回バッファにコピー
□読込・切替 :n 編集中のファイルを切り替える :n! 編集中のファイルを強制的に切り替える :e file 編集ファイルをfileに変更する :e! file 編集ファイルをfileに強制的に変更する :r file カレント行の下にfileを読みこむ :-r file カレント行の上にfileを読みこむ :n r file n行目の下にfileを読みこむ :-n r file n行目の上にfileを読みこむ
□保存・終了 ZZ 変更されている場合、保存し終了 :x 変更されている場合、保存し終了 :wq 上書きして終了 :w 上書き保存 :w file fileに保存 :n1,n2 w file n1〜n2行までをfileに保存 :n1,n2,w >> file n1〜n2行までを既存のfileに追加 :w! 保護を無視して上書き :w! file 保護を無視してfileに上書き :q ファイルを閉じてvi終了 :q! ファイルを破棄してvi終了
□その他 ^g 現在の行番号を表示 :r!command コマンド(command)の実行結果を挿入 :n r! command コマンド(command)の実行結果を行nに挿入 !command コマンド(command)を実行 !object command objectをコマンド(command)に送信し、出力と置き換え :n1,n2 command 行n1〜n2をコマンド(command)へ送信し、出力と置き換え n !! command n行をコマンド(command)へ送信し、出力と置き換え !! 最後のシステムコマンドを繰り返す :sh サブシェルを作成 J カーソル位置の行と次の行を連結 :n1,n2s/string1/string2/[c][g] n1〜n2行まで検索文字列(string1)を検索し、置換文字列(string2)に置き換えます。
c:置き換え確認あり
g:全て置き換え
c,gのどちらも指定しない場合、最初の文字だけを置き換えます。
全文対象の場合「:1,$s/string1/string2/[c][g]」もしくは「:%s/string1/string2/[c][g]」とします。