【Bash】「vi」 - ファイル編集をするコマンド
Shell Script / シェルスクリプト
【Bash】
「vi」 - ファイル編集をするコマンド
「vi」コマンドとは
「vi」コマンドは、多機能なテキストエディタ。
「vi」エディタは、UNIX系OSで、一番利用されているテキストエディタ。
「vi」エディタは、3つの操作モード「コマンド」「挿入」「ex」がある。
モードによって操作できる内容が変わる。
| コマンドモード | 「vi」コマンドを実行すると、まず、コマンドオードで起動される。 カーソルの移動や文字の削除を行うためのモード。
 
 | 
| 挿入モード | 入力した文字列を挿入するためのモード。 
 | 
| 「ex」モード | コマンドモード時に「:」を入力すると「ex」モードへ移動する。 
 | 
 
書式
vi [オプション] ファイル名
指定されたファイルが無い場合は、新しいファイルが作成される。
ファイル名には、ワイルドカード('*', '?'など)も使用可能。
編集に使う操作キー
| 終了キー | 
|---|
| :q | セーブせずに終了 | 
| :q! | 変更した行もセーブせずに終了 | 
| :w | セーブするが終了しない。 | 
| :wq | セーブして終了 | 
|  |  | 
|  |  | 
| 「編集モード」へ移るためのキー | 
|---|
| 「Esc」 | 「編集モード」を「終了」する | 
| a | 「現在のカーソル位置」から「挿入」する。 | 
| i | 「現在のカーソル位置」から「挿入」する。 | 
| R | 「現在のカーソル位置」から「置換」する。 | 
| A | 「現在行の末尾」に「追加」する。 | 
| O | 「現在行の前」に「行」を「挿入」する。 | 
| o | 「現在行の次」に「行」を「挿入」する。 | 
|  |  | 
|  |  | 
| カーソル移動キー | 
|---|
| h(←) | 左 | 
| j(↓) | 上 | 
| k(↑) | 下 | 
| l(→) | 右 | 
| 0 | 行頭へ | 
| $ | 行末へ | 
| [Enter] | 次の行の先頭へ | 
| w | 次の単語へ | 
| b | 前の単語へ | 
| ctrl + f | 次画面へ | 
| ctrl + b | 前画面へ | 
| 1G | 文頭へ | 
| G | 文末へ | 
| nnG | nn行目へ | 
|  |  | 
|  |  | 
| 変更キー | 
|---|
| x | 1文字削除 | 
| dd | 1行削除(カット) | 
| cw(Change Word) | 1語変更 | 
| c$ | カーソル位置から行末まで変更 | 
| dw(Delete Word) | 1語削除 | 
| d$ | カーソル位置から行末まで削除 | 
|  |  | 
|  |  | 
| 検索 | 
|---|
| /正規表現 | 前方検索 | 
| ?正規表現 | 後方検索 | 
| n | 次の候補 | 
| N | 前の候補 | 
|  |  | 
|  |  | 
| 置き換え | 
|---|
| :1,$s/正規表現/置き換え文字列/g | 文書内の全ての「正規表現」を「置き換え文字列」に置換 | 
|  |  | 
|  |  | 
| カット/コピー&ペースト | 
|---|
| yy | 1行コピー | 
| dd | 1行カット | 
| p | ペースト(張り付け) | 
|  |  | 
|  |  | 
| その他 | 
|---|
| .(ドット) | 直前の変更操作の繰り返し | 
| u | 直前の変更操作の取り消し(何回でも戻れる) | 
| :r xxx | ファイル xxx の内容を次の行に挿入 | 
| :r! xxx | OSの xxx コマンドを実行し、その結果を次の行にに挿入。 | 
| :h | 日本語マニュアルを表示 | 
|  |  | 
|  |  | 
| 挿入モード | 
|---|
| 挿入回数i | 指定挿入回数分、カーソルの前にテキストを挿入する。 | 
| 挿入回数r | 指定挿入回数分、行頭にテキストをを挿入する。 | 
| 挿入回数a | 指定挿入回数分、カーソルの後にテキストを挿入する。 | 
| 挿入回数A | 指定挿入回数分、行の末尾にテキストを挿入する。 | 
| 挿入回数o | 指定挿入回数分、次の行にテキストを挿入する。 | 
| 挿入回数O | 指定挿入回数分、前の行にテキストを挿入する。 | 
|  |  | 
|  |  | 
| 「ex」モード | 
|---|
| # | 現在の行番号と内容を表示する。 | 
| 行数 | 指定行数分、カーソルを移動する。 | 
| $ | カーソルを最終行へ移動する。 | 
| e ファイル名 | 現在のバッファを終了して、指定ファイルを開く。 | 
| e! | ファイルを直前に保存した時の状態に戻す。 | 
| w | ファイルを上書き保存する。「wq!」で強制保存。 | 
| wq | 編集内容を保存して終了する。 | 
| q! | 編集内容を更新しないで終了する。 | 
| r ファイル名 | ファイルをカーソル行以降の行に挿入する。 | 
| set | 現在の有効なオプションを表示する。 | 
| set オプション | 指定したオプションを設定。 | 
| set no オプション | 指定したオプションを解除。 | 
| set all | すべてのオプションを表示する。 | 
| !コマンド | シェルの子プロセスとしてコマンドを実行する。 | 
| r! コマンド | コマンドを実行して、結果をカーソルの後ろへ挿入する。 | 
| viusage | 「コマンド」モード、「挿入」モードのヘルプを表示。 | 
| exusage | 「ex」モードのヘルプを表示。 | 
| /文字列 | 指定した文字列を検索。 | 
| s/文字列1/文字列2/g | 現在の行で、最初に「文字列1」に合致した文字列を「文字列2」に置き換える。 | 
| %s/文字列1/文字列2/g | 現在の行で「文字列1」に合致した文字列を「文字列2」に置き換える。 | 
| %s/文字列1/文字列2 | 「文字列1」を「文字列2」に置き換える。 | 
| %s/文字列1//gc | バッファ上の全ての文字列を確認しながら削除する。 | 
| %s/文字列1/文字列2/g | バッファ上のすげての「文字列1」を「文字列2」に置き換える。 | 
| %s/文字列1/文字列2/gc | バッファ上の全ての「文字列1」を確認しながら、「文字列2」に置き換えする。 | 
| u | 直前の変更を戻す。 | 
| U | 現在行に対する変更を戻す。 | 
オプション
| コマンドモード | 
|---|
| 文字数h | カーソルを指定した文字数分左へ移動する。 | 
| 文字数l | カーソルを指定した文字数分右へ移動する。 | 
| 行数j | カーソルを指定した行数分下へ移動する。 | 
| 行数k | カーソルを指定した行数分だけ上へ移動する。 | 
| 行数G | カーソルを指定した行数分下へ移動する。 | 
| 0 | 行頭へ移動する。 | 
| 行数$ | カーソルを指定行数−1桁下の行末に移動する。 | 
| 行数+ | カーソルを指定行数分の下の行頭へ移動する。 | 
| 行数- | カーソルを指定行数分の上の行頭へ移動する。 | 
| 文字数w | カーソルを指定文字数分進ませる。区切り文字は記号。 | 
| 文字数W | カーソルを指定文字数分進ませる。区切り文字はスペース。 | 
| 文字数b | カーソルを指定文字数分戻らせる。区切り文字は記号。 | 
| 文字数B | カーソルを指定文字数分戻らせる。区切り文字はスペース。 | 
| 構文数( | カーソルを指定構文数分進ませる。 | 
| 構文数) | カーソルを指定構文数分戻らせる。 | 
| 段落数( | カーソルを指定段落数分進ませる。 | 
| 段落数) | カーソルを指定段落数分戻らせる。 | 
| ページ数[ctrl]-f | 指定ベージ数分、下へスクロールする。 | 
| ページ数[ctrl]-b | 指定ページ数分、上へスクロールする。 | 
| [ctrl]-d | 下へ、画面半分スクロールする。 | 
| [ctrl]-u | 上へ、画面半分スクロールする。 | 
| 行数[ctrl]-e | 指定行数分、下へスクロールする。 | 
| 行数[ctrl]-y | 指定行数分、上へスクロールする。 | 
| % | 対応する括弧へ移動する。 | 
| 文字数x | 指定文字数分の文字を削除する。 | 
| 指定行数dd | 指定行数分の行を削除する。 | 
| 指定行数D | 指定行数下の行末まで削除する。 | 
| 指定行数J | 指定行数下までの改行コードを削除する。 |