| viコマンド(起動) | コマンドの詳細 |
|---|---|
| vi ファイル名 | 編集対象のファイルを開く(複数ファイルも可) |
| vi +n ファイル名 | n行目から表示する |
| vi + ファイル名 | 最後一画面を表示する |
| vi + /文字列 ファイル名 | 文字列が存在する行から表示する |
| vi -r ファイル名 | 壊れたファイルをリカバリする |
| viコマンド(カーソル移動) | コマンドの詳細 |
|---|---|
| h, BS | 1文字左へ移動(←) |
| j, Ctrl + N | 1行下へ移動(↓) |
| k, Ctrl + P | 1行上へ移動(↑) |
| l, SPACE | 1文字右に移動(→) |
| H | 画面の最上行に移動 |
| M | 画面の中央行に移動 |
| L | 画面の最下行に移動 |
| 1G | 文頭へ |
| G | ファイルの最終行に移動 |
| nG | ファイルのn行目に移動 |
| 0 | 行の頭へ移動 |
| $ | 行の最後へ移動 |
| Ctrl + F | 1ページ下へ |
| Ctrl + B | 1ページ上へ |
| Ctrl + D | 半ページ下へ |
| Ctrl + U | 半ページ上へ |
| w | カーソルを1語進める |
| b | カーソルを1語戻す |
| e | カーソルを単語末尾へ |
| ^ | カーソルを行頭へ |
| Enter | 次行の行頭へ |
| viコマンド(入力・編集) | コマンドの詳細 |
|---|---|
| ESC | コマンドモードへ移行 |
| a | カーソルの右から入力開始 |
| A | 行末から入力開始 |
| i | カーソルの左から入力開始 |
| I | 行頭から入力開始 |
| o | 現在の行の下に1行挿入し、その行頭から入力開始 |
| O | 現在の行の上に1行挿入し、その行頭から入力開始 |
| J | 次の行と現在の行とを結合する |
| 3J | 下の2行を現在の行とを結合する |
| c系 | 対象文字列を消して文字を挿入(つまり、変更) |
| C | カーソル位置から行末までを消して文字を挿入 |
| viコマンド(削除) | コマンドの詳細 |
|---|---|
| x | カーソルの1文字削除 |
| X | カーソルの左の文字を1文字削除 |
| dd | 現在の行を削除(バッファにコピーされる) |
| d0 | 行頭からカーソルの直前までの削除 |
| ndd | n行、削除 |
| dl | 1文字の削除(3文字の削除はd3l, 3dlのどちらでも可) |
| dw | カーソル上の一語を削除 |
| df 字 | カーソル位置から指定した字までを削除 |
| d$ | カーソル位置から行の最後までを削除 |
| d^ | カーソル位置から行の行頭までを削除 |
| :行1,行2 d | 行1から行2を削除 |
| :g/文字列/d | 指定文字列のある行を全て削除 |
| viコマンド(検索) | コマンドの詳細 |
|---|---|
| /<文字列> | 文字列を検索する |
| ?<文字列> | 文字列を検索する(逆方向) |
| n | 順方向へ検索する |
| N | 逆方向へ検索する |
| f 文字 | 文字を検索(右方向へ) |
| F 文字 | 文字を検索(左方向へ) |
| ; | 次の検索 |
| % | (,[に対して対応する ),]や}を検索 |
| viコマンド(置換) | コマンドの詳細 |
|---|---|
| r | カーソル上の1文字を他の1文字に置換 |
| R | カーソル上の文字からEscが押されるまでの文字列を置換 |
| s | カーソルのある1文字を他の文字列で置換 |
| S | 現在の行を他の文字列で置換 |
| cw | カーソル位置からこの語の最後までを置換 |
| c$ | カーソル位置から行末まで変更 |
| cf 字 | カーソル位置から指定した字までを置換 |
| C | カーソル位置から行の最後までを置換 |
| :&, & | 直前のsコマンドの繰り返し |
| :%s/置換え前/置換え後 | 置換え前の文字列を、置換え後の文字列で置換 |
| もっとも近くにある文字列一つに対してのみ実行 | |
| :%s/置換え前/置換え後/g | ファイルの中すべての文字列に対して、置換えを行う |
| ~(チルダ) | 大文字/小文字を変更する |
| :1,$s/文字列A/文字列B/g | 文字列Aを全て文字列Bに置換 |
| :s/文字列A/文字列B/ | 文字列Aを文字列Bに置換 |
| (カーソルのある行で、最初に合致するパターンのみ置換) | |
| :s/文字列A/文字列B/g | カーソル行の文字列Aを全て文字列Bに置換 |
| :s/文字列A/文字列B/c | 文字列Aを文字列Bに置換 |
| (カーソルのある行で、最初に合致するパターンのみ置換) | |
| (置換前に確認:yで置換、nで置換なし) | |
| :10,50s/文字列A/文字列B/g | 文字列Aを文字列Bに置換 |
| (10行目から50行目までの間で、合致するパターン全てを置換) | |
| :10,$s/文字列A/文字列B/g | 文字列Aを文字列Bに置換 |
| (10行目から最終行までの間で、合致するパターン全てを置換) |
| viコマンド(カット&ペースト) | コマンドの詳細 |
|---|---|
| yy | 現在の行をバッファにコピー |
| nyy | n行分をバッファにコピー |
| yl | 1文字のコピー(3文字のコピーはy3l, 3ylのどちらでも可) |
| yw | 単語をバッファにコピー |
| y0 | 行頭からカーソルの直前までのコピー |
| y$ | カーソルの位置から行末までのコピー |
| p | バッファ内のテキストを挿入 |
| (文字、単語はカーソルの右に、行は現在の行の下に挿入される) | |
| P | バッファ内のテキストを挿入 |
| (挿入位置はpの逆。文字、単語はカーソルの左に、行は現在の行の上に挿入される) |
| viコマンド(ウインドウ操作) | コマンドの詳細 |
|---|---|
| :sp [ファイル] | ウインドウを横に分割 |
| :vs [ファイル] | ウインドウを縦に分割 |
| : q, :only | カーソルのあるウインドウ以外を全部閉じる |
| :new | 空の横ウインドウを開く |
| :vnew | 空の縦ウインドウを開く |
| Ctrl-w w | 次のウインドウに移動 |
| Ctrl-w p | 前のウインドウに移動 |
| Ctrl-w o | 現在のウインドウ以外を閉じる |
| viコマンド(Undo・Redo) | コマンドの詳細 |
|---|---|
| u | 直前の操作を取りやめる |
| U | 行全体の操作を取りやめる |
| .(ドット) | 直前の変更操作の繰り返し |
| Ctrl-R | 取り消しの取り消し |
| viコマンド(ファイル操作) | コマンドの詳細 |
|---|---|
| :w | 上書き保存 |
| :w [ファイル名] | 現在のファイル(指定ファイル)に保存 |
| :w![ファイル名] | 書き込みを強行 |
| :行1,行2 ファイル名 | 行1から行2のテキストをファイルに保存 |
| :w >> ファイル名 | 現行ファイルの最後に書き加える |
| :r ファイル名 | 現行の行の次の行にファイルを読み込み、挿入する |
| :r! xxx | OSのxxxコマンドを実行し、その結果を次の行に挿入。 |
| :r | 現在の行の次の行に現在のファイルを読み込み、挿入する |
| :args | 編集ファイルの一覧を表示する |
| :n | 複数個のファイル編集時、次のファイルを編集対象とする |
| :e# | 一つ前の編集ファイルに戻る |
| :e!% | 現在のファイルを再ロードして、最初から編集をやり直す |
| :e ファイル名 | 指定ファイルを編集対象とする |
| :rewind | 現在のファイルの変更内容を保存して、リストの最初から編集をやり直す |
| :rewind! | 現在のファイルの変更内容を保存しないで、リストの最初から編集をやり直す |
| :rew | 最後のファイル→先頭のファイル(rewind) |
| viコマンド(終了) | コマンドの詳細 |
|---|---|
| ZZ | viを終了(内容が変更されている場合は保存) |
| :wq | ファイルに保存してvi終了 |
| :#,# w | #行目から#行目までを保存 |
| :q | viを終了(内容が変更されている場合は警告) |
| :wq 別ファイル名 | 別名で保存して終了 |
| :q! | viの強制終了(内容が変更されていても保存されない) |
| viコマンド(バッファ) | コマンドの詳細 |
|---|---|
| :ls | バッファリストの表示 |
| :b バッファ | バッファを表示 |
| :bn | 次のバッファを表示 |
| :bp | 前のバッファを表示 |
| viコマンド(UNIXコマンドの実行) | コマンドの詳細 |
|---|---|
| :!<コマンド> | <コマンド>を実行する |
| :!! | 直前の<コマンド>を再実行する |
| :sh | 一時的にシェルに戻る。exitでviに戻る。 |
| viコマンド(コマンドのフィルタリング) | コマンドの詳細 |
|---|---|
| !<コマンド> | <コマンド>を実行して結果を挿入 |
| !!date | dateの結果の挿入 |
| !!tr A-Z a-z | カーソル行の大文字を小文字に変換 |
| viコマンド(テキスト入力の暗記) | コマンドの詳細 |
|---|---|
| :ab<文字列><置換え文字列> | <文字列>と入力すると<置換え文字列>に置き換えるように設定する |
| :unab<文字列> | <文字列>の置き換え設定を解除する |
| :ab | 一覧表示 |
| viコマンド(その他) | コマンドの詳細 |
|---|---|
| Ctrl + G | ファイル名、修正の有無、現在の行数などの情報が表示されます |
| Ctrl + L | 画面を再表示 |
| [n] Shift-g | ファイル内のn行に移動(nが無ければファイル末に移動) |
| Shift + Q | exで編集をする |
| vi | exからviに戻る |
| :h | 日本語マニュアルを表示 |
| :! [外部コマンド] | 外部シェルコマンドが実行 |
| viコマンド | コマンドの詳細 |
|---|---|
| :set number, :set nu | 行番号を表示する |
| :set no number, :set nonu | 行番号の表示をやめる |
| :set showmode | 現在のモードを表示する |
| :set showmatch | ()や{}の対応の報告をするようになる |
| :set ignorecase | 大文字/小文字の区別なく検索する |
| :set autoindent | 自動インデントモード |
| :set noautoindent | 自動インデントモードをやめる |
| :set all | すべてのオプションを表示する |
| :set ruler | ルーラー(右下に表示される行・列の番号)を表示する |
| :set tabstop=数値 | タブの大きさを半角スペース数で指定 |
| :set nowrap | 折り返し表示しない |
| :set history=数値 | コマンド履歴の保存数 |
| :set backup | ファイルを保存する時にバックアップファイルを作成する |
| :set nobackup | バックアップファイルを作成しない |
| :syntax on | off |カラー表示のオンまたはオフ |
| :Tutorial | 30分程度のVi利用方法のチュートリアル |
| :vert diffsplit [ファイル] | 今のファイルと、他のファイルとの差分を取るコマンド |