Linuxでviコマンドを使用してファイルを編集する方法をまとめました。
viコマンドでファイルを作成・編集する
既にファイルが存在している状態でviコマンドの引数にファイルを指定すると、既に存在しているファイルを編集することができます。
もし、存在していないファイルをviコマンドの引数に指定した場合は新規でファイルを作成します。viコマンドで新規でファイルを作成する場合は「保存して終了」しなければ新規作成したファイルが保存されません。
コマンドの入力例は以下です。
# vi test.txt
上記コマンドでviエディタを開いたら、以下のコマンドを実行することでファイルに文字を入力します。
i コマンドモード⇒入力モード(カーソル位置に文字を入力する)
a コマンドモード⇒入力モード(カーソルの後ろに文字を入力する)
o コマンドモード⇒入力モード(カーソルの下に文字を入力する)
O コマンドモード⇒入力モード(カーソルの上に文字を入力する)
<ESC> 入力モード⇒コマンドモード
以下のコマンドで、カーソルの移動が可能です。
:行番号 指定した行番号へ移動
G ファイルの末尾
h 左へ1文字
j 下へ1文字
k 上へ1文字
l 右へ1文字
w 次の単語へ
0 行の先頭
$ 行の末尾
u 1つ戻す(Undo)
Ctrl+r Undoを1つ戻す(Redo)
文字を入力する(挿入モード)
viコマンドでファイルを編集できる状態にしたら、iコマンドを入力して挿入モードにし、ファイルを編集します。
i
ファイルを保存する(コマンドモード)
iモードから、ESCキーを押してコマンドモードになります。コマンドモードの状態で以下コマンドを実行することでファイルを保存します。
:w
強制的に上書き保存する場合は「!」を付けます。
:w!
保存してviエディタを終了したい場合はqを付け加えます。
:wq
強制的に保存して終了する場合は以下のコマンドを実行します。
:wq!
保存せず終了する(コマンドモード)
ESCキーを押してコマンドモードになります。すでにコマンドモードの場合はそのまま以下コマンドを実行します。
:q
保存せずにviエディタを終了することができます。誤って編集していて:qでviエディタを終了できない場合には!を記載して強制的にviエディタを終了します。
:q!
単語を検索する
ファイル内の単語を検索するには以下のコマンドを実行します。
/検索したい単語
/のすぐ後ろに検索したい単語を入力して実行します。検索結果の次の単語に移動するにはnキーを入力します。
また、viエディタを終了して以下のコマンドを実行することでもファイル内の単語を検索することができます。
cat test.txt | grep <検索したい単語>
検索してヒットする行数が多いことが予想される場合はmoreコマンドで確認しましょう。
more test.txt | grep <検索したい単語>
ハイライトを解除する
viエディタで開いたファイルで確認できる単語に色が付き、みにくくなることがあります。以下のコマンドを実行することでviエディタのハイライトを解除して見やすくします。
:noh
文字を置換する
以下のコマンドで、ファイルのカーソルがある行内の文字を置換します。
:s/置換する前の文字列/置換後の文字/g
cをつけることで確認しながら置換が可能です。
:s/置換する前の文字列/置換後の文字/gc
行のコピー、ペースト、削除
行のコピー、ペースト、削除配下のコマンドで可能です。
yy
カーソルのある行をコピーします。
dd
カーソルのある行を削除してコピーします(行の切り取りを行います)。
D
カーソルから後ろの部分を削除してコピーします(カーソルから後ろを切り取ります)。
p
カーソルがある位置の後ろにコピーしている内容を貼り付けます。
P
カーソルがある位置にコピーしている内容を貼り付けます。
dG
カーソル位置からファイル末尾までを削除します。
x
カーソルの位置にある1文字を削除します。
dw
カーソルがある位置の1単語を削除します。