【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 | 指定行数下までの改行コードを削除する。 |