vi エディタは、 「コマンドモード」、 「入力モード」 があり、これらのモードを切り替えて使用する。
起動直後は 「コマンドモード」 になっている。任意のコマンドを入力し 「入力モード」 となると文字の入力が出来るようになる。
ESCキー を押すといつでも 「コマンドモード」 に戻れる。
今、どちらのモードになっているのか分からなくなってしまったら、とりあえず ESCキー を二回ほど押して「コマンドモード」に一旦戻ると良い。
尚、これから紹介するコマンド群は全て、大文字/小文字を区別して入力する必要がある。特に明記はしていないが、必要に応じて、Capslock を使用するか、又は Shift キーと組み合わせて入力せねばならない。
| vi ファイル名 | 編集対象のファイルを開く(複数ファイルも可) |
| vi +n ファイル名 | n 行目から表示する |
| vi + ファイル名 | 最後一画面を表示する |
| vi + /文字列 ファイル名 | 文字列が存在する行から表示する |
| vi -r ファイル名 | 壊れたファイルをリカバリする |
| h | BackSpace | 1文字左へ移動(←) |
| j | Ctrl + N | 1行下へ移動(↓) |
| k | Ctrl + P | 1行上へ移動(↑) |
| l | Space | 1文字右に移動(→) |
| H | 画面の最上行に移動 | |
| M | 画面の中央行に移動 | |
| L | 画面の最下行に移動 | |
| G | ファイルの最終行に移動 | |
| n G | ファイルの n 行目に移動 | |
| 0 | 行頭へ移動 | |
| $ | 行末へ移動 | |
| Ctrl + f | 1ページ下へ | |
| Ctrl + b | 1ページ上へ | |
| Ctrl + d | 半ページ下へ | |
| Ctrl + u | 半ページ上へ | |
(コマンドモードでここのコマンドを入力すると入力モードになります)
| a | カーソルの右から入力開始 |
| A | 行末から入力開始 |
| i | カーソルの左から入力開始 |
| I | 行頭から入力開始 |
| o | 現在の行の下に1行挿入し、その行頭から入力開始 |
| O | 現在の行の上に1行挿入し、その行頭から入力開始 |
| J | 次の行と現在の行とを結合する |
| 3J | 下の2行を現在の行とを結合する |
| x | カーソル上の1文字削除 |
| X | カーソルの左の文字を1文字削除 |
| dd | 現在の行を削除(バッファにコピーされる) |
| d n d | 現在の行から、n 行を削除 |
| d 1 G | 現在の行から、ファイルの先頭までを削除 |
| d G | 現在の行から、ファイルの最後までを削除 |
| dw | カーソル上の一語を削除 |
| df 字 | カーソル位置から指定した 字 までを削除 |
| d$ | カーソル位置から行の最後までを削除 |
| d^ | カーソル位置から行の先頭までを削除 |
| :行1, 行2 d | 行1 から行2 を削除 |
| /<文字列> | 文字列 を検索する |
| ?<文字列> | 文字列 を検索する(逆方向) |
| n | 順方向へ検索する |
| N | 逆方向へ検索する |
| r | カーソル上の1文字を他の1文字に置換 | |
| R | カーソル上の文字からEscが押されるまでの文字列を置換 | |
| s | カーソルのある1文字を他の文字列で置換 | |
| S | 現在の行を他の文字列で置換 | |
| cw | カーソル位置からこの語の最後までを置換 | |
| cf 字 | カーソル位置から指定した 字 までを置換 | |
| C | カーソル位置から行の最後までを置換 | |
| :s/置換え前/置換え後/ | 現在の行で、置換え前の文字列を、置換え後の文字列で置換 もっとも近くにある文字列一つに対してのみ実行 | |
| :s/置換え前/置換え後/g | 現在の行で、置換え前の文字列を、置換え後の文字列で置換 | |
| :s/置換え前/置換え後/gc | 現在の行で、置換え前の文字列を、置換え後の文字列で置換 (確認あり) | |
| :%s/置換え前/置換え後/ | 置換え前の文字列を、置換え後の文字列で置換 もっとも近くにある文字列一つに対してのみ実行 | |
| :%s/置換え前/置換え後/g | ファイルの中すべての文字列に対して、置換えを行う | |
| :%s/置換え前/置換え後/gc | ファイルの中すべての文字列に対して、置換えを行う (確認あり) | |
| ∼ (チルダ) | 大文字/小文字を変更する | |
| :& | & | 直前の s(置換) コマンドの繰り返し |
| yy | 現在の行をバッファにコピー |
| n yy | n 行分をバッファにコピー |
| yw | 単語をバッファにコピー |
| p | バッファ内のテキストを挿入 (文字、単語はカーソルの右に、行は現在の行の下に挿入される) |
| P | バッファ内のテキストを挿入 (挿入位置はpの逆。文字、単語はカーソルの左に、行は現在の行の上に挿入される) |
| u | 直前の操作を取りやめる |
| U | 行全体の操作を取りやめる |
| . (ドット) | 直前の操作の繰り返し |
| :w ファイル名 | 現在のファイル(指定ファイル)に保存 |
| :w! ファイル名 | 書き込みを強行 |
| :行1, 行2 ファイル名 | 行1 から行2 のテキストをファイルに保存 |
| :w >> ファイル名 | 現行ファイルの最後に書き加える |
| :r ファイル名 | 現在の行の次の行にファイルを読み込み、挿入する |
| :r | 現在の行の次の行に現在のファイルを読み込み、挿入する |
| :args | 編集ファイルの一覧を表示する |
| :n | 複数個のファイル編集時、次のファイルを編集対象とする |
| :e# | 一つ前の編集ファイルに戻る |
| :e!% | 現在のファイルを再ロードして、最初から編集をやり直す |
| :e ファイル名 | 指定ファイルを編集対象とする |
| :rewind | 現在のファイルの変更内容を保存して、リストの最初から編集をやり直す |
| :rewind! | 現在のファイルの変更内容を保存しないで、リストの最初から編集をやり直す |
| ZZ | viを終了(内容が変更されている場合は保存) |
| :wq | ファイルに保存してvi終了 |
| :q | viを終了(内容が変更されている場合は警告) |
| :q! | viの強制終了(内容が変更されていても保存されない) |
| :!<コマンド> | <コマンド>を実行する |
| :!! | 直前の<コマンド>を再実行する |
| :sh | 一時的にシェルに戻る。exitでviに戻る。 |
| !<コマンド> | <コマンド>を実行して結果を挿入 |
| !!date | date の結果の挿入 |
| !!tr A-Z a-z | カーソル行の大文字を小文字に変換 |
| :ab <文字列> <置換え文字列> | <文字列>と入力すると<置換え文字列>に置き換えるように設定する |
| :unab <文字列> | <文字列>の置き換え設定を解除する |
| :ab | 一覧表示 |
| Ctrl + G | ファイル名、修正の有無、現在の行数などの情報を表示 |
| Ctrl + L | 画面を再表示 |
| Shift + Q | exで編集をする |
| vi | exからviに戻る |
| :set number | :set nu | 行番号を表示する |
| :set no number | :set nonu | 行番号の表示をやめる |
| :set showmode | 現在のモードを表示する | |
| :set showmatch | () や {} の対応の報告をするようになる | |
| :set ignorecase | 大文字/小文字の区別なく検索する | |
| :set autoindent | 自動インデントモード | |
| :set noautoindent | 自動インデントモードをやめる | |
| :set all | すべてのオプションを表示する | |
ホームディレクトリに .exrc というファイルを作成し、そのファイル内に以下のように記述する。
set tabstop = 4 set showmode set autoindent set nonumber set showmatch