LinuxOSでテキストファイルを参照・編集できるviエディタの使い方

viコマンドとは、viエディタを起動するためのコマンドです。

viエディタは動作が非常に軽く、操作しやすいため、多くのシステムエンジニアの人が利用するエディタです。このviエディタの使い方を解説します。



vi(ブイアイ)コマンドの基本的な使い方

viコマンドは、viエディタというテキストエディタを起動するコマンドです。

viコマンドはあくまでviエディタを起動するコマンドであって、viエディタ起動後はエディタ画面上で使うコマンドが利用できるようになります。

コマンドさえ覚えれば、容量の多いログファイル等をviエディタで開いても非常に動作が軽く、素早い編集が可能です。

> vi (テキストファイル名)

  1. 「テキストファイル名」が存在しないファイル名であれば、そのファイル名で新規に作成する
  2. 「テキストファイル名」が存在するファイル名であれば、そのファイルを編集又は参照できる

viエディタの様々なな起動方法

viエディタは、オプションを付けることで様々な起動方法が可能です。

「vi +n ファイル名」でn行目から表示してviエディタを起動

ファイル名の前に「+n」オプションを付けると、「n」で指定した数字の行から表示して起動します。

(例)vi +101 textfile.txt

上記の例は、textfile.txtを101行目から表示してviエディタを起動します。

「vi + ファイル名」で最終1画面を表示してviエディタを起動

ファイル名の前に「+」オプションを付けると、テキストファイルの最終1画面を表示してviエディタを起動します。

「vi +/文字列 ファイル名」で文字列が存在する行から表示してviエディタを起動

ファイル名の前に「+/文字列」オプションを付けると、指定した「文字列」が存在する行から表示してviエディタを起動します。

「vi -r ファイル名」で壊れたファイルをリカバリした上でviエディタを起動

編集するファイルが壊れていた場合、ファイルを修復(リカバリ)した上でviエディタを起動します。

なお、必ずしも100%修復できるとは限りません。

(例)vi -r textfile.txt

ファイルを誤って更新しないよう開きたいならviewコマンドを使う

viコマンドは編集又は参照ができますが、参照だけするためにファイルを開く場合、誤って更新するのを防止するために、参照専用でファイルを開く「view」(ビュー)コマンドで使用します。

> view (テキストファイル名)

viewコマンドで起動したテキストファイルは、保存するコマンドが効きませんので、誤って更新される心配が無くなります。

viエディタの使い方

実際のviエディタの使い方を解説します。

viエディタのモードと切り替え方

viエディタには、下記の2つのモードがあります。

  1. コマンドモード
  2. viエディタを開いた時はコマンドモードで開きます。
    コマンドモードとは、例えば削除したり、文字検索する等、「文書全体の成型や検索、置き換え」等を行うモードです。

  3. 編集モード
  4. 編集モードは、「文字を入力する」といった文章編集モードです。

モードの切り替え方

モードの切替は下記の方法です。なお、大文字の「R」や「A」は、[Shit]キーを押しながら[R]キーや[A]キーを押すことでコマンドとして認識されます。

コマンドモード▶編集モード

下記の通り、文字入力の開始位置によって、コマンドが異なります。

  1. 「i」今のカーソルから文字を挿入可能
  2. 「R」今のカーソルから文字を上書き入力可能
  3. 「A」今の行の末尾に追加
  4. 「O」今の行の前に行挿入
  5. 「o」今の行の次に行挿入

編集モード▶コマンドモード

[ESC]キーを押すと、編集モードからコマンドモードに切り替わります。

コマンドモードで使用できるコマンド

コマンドモードのviエディタでのみ使用できるコマンドを解説します。

viエディタ上でのカーソル移動

コマンドモードで有効となるカーソルの移動コマンドを解説します。

「h」又は「←」は左へ移動

左側へカーソルを移動する場合、「h」キー又は「←」キーの何れかでできます。「BackSpace」キーでも左へ移動します。

なお、「h」キーと、後述する「j」、「k」、「l」キーはキーボード上、横に4つ並んでいるため、上下左右の移動は、矢印キーを使う時と同様の感覚で操作できます。

「j」又は「↓」は上へ移動

上側へカーソルを移動する場合、「j」キー又は「↓」キーの何れかでできます。「Ctrl + P」キーでも左へ移動します。

「k」又は「↑」は下へ移動

下側へカーソルを移動する場合、「k」キー又は「↑」キーの何れかでできます。「Ctrl + N」キーでも下へ移動します。

「l」又は「→」は右へ移動

右側へカーソルを移動する場合、「l」キー又は「→」キーの何れかでできます。「Space」キーでも右へ移動します。

「0」(ゼロ)は行頭へ移動

カーソルがある行の先頭へ移動するには「0」(ゼロ)キーを入力します。

「$」は行末へ移動

カーソルがある行の先頭へ移動するには「$」(ダラー)キーを入力します。

[Enter]キーは次行の先頭へ移動

カーソルが行の途中にあっても、[Enter]キーの入力で次行の先頭へカーソルが移動します。

「H」は画面に表示される範囲の最上行へ移動

テキストデータが長文であると、エディタの画面には全文が表示されていませんが、「H」の入力で、現在画面に表示されている行の最上行へ移動します。

「M」は画面に表示される範囲の中央行へ移動

「M」の入力で、現在画面に表示されている行の中央行へ移動します。

「L」は画面に表示される範囲の最下行へ移動

「L」の入力で、現在画面に表示されている行の最下行へ移動します。

「w」は次の単語の先頭へ移動

現在カーソルがある単語(もしくは文章)の先頭へ移動します。日本語の場合は英語のように文章の合間にスペースが入らないため、日本語の場合は単語でなく、文章の先頭へ移動します。

「b」は現在又は前の単語の先頭へ移動

現在、単語の途中にカーソルがあれば、カーソルのある単語の先頭文字へ移動します。

現在、単語の先頭にカーソルがあれば、前の単語の先頭文字へ移動します。

「e」は現在又は次の単語の末尾へ移動

現在、単語の途中にカーソルがあれば、カーソルのある単語の末尾へ移動します。

現在、単語の末尾にカーソルがあれば、次の単語の末尾文字へ移動します。

「[Ctrl] + f」は次画面を表示

現在画面で見えていない次の画面へ一気に移動します。

「[Ctrl] + b」は前画面を表示

現在画面で見えていない前の画面へ一気に移動します。

「[Ctrl] + d」は次の半画面を表示

現在画面で見えていない次の画面へ半画面だけ移動します。

「[Ctrl] + u」は前の半画面を表示

現在画面で見えていない前の画面へ半画面だけ移動します。

「1G」は文頭へ移動

「1G」は「1行目へ移動」を意味し、1行目の1文字目へ移動します。

「G」は文末へ移動

「G」の入力で最終行の1文字目へ移動します。

「nnG」はnn行目へ移動

「nn」は移動先に指定する行番号で、指定した行番号の後に「G」を押すと、指定した行番号へ移動します。

(例)34G

上記の例では、34行目へ移動します。

viエディタ上でのテキスト編集

コマンドモードで有効となるテキストの編集コマンドを解説します。

「x」は1文字削除

1文字を削除する場合、「x」を入力します。

「cw」はカーソル位置から単語の末尾を置換

カーソル位置からこの語の最後までを置換します。

「c$」はカーソル位置から行末まで置換

現在カーソルがある位置から行末までを置換します。

「dw」は1単語の削除

現在カーソルのある単語を削除します。

「d$」はカーソル位置から行末まで削除

現在カーソルがある位置から行末までを削除します。

viエディタの行コピーとペースト

コマンドモードで有効となるコピー及びペーストのコマンドを解説します。

「yy」行をコピーする

1行をコピーしたい場合は、該当の行にカーソルを移動して「yy」を入力します。複数行をコピーしたい場合は、該当の行を反転させて「yy」を入力します。

「dd」行をカットする

1行をカットしたい場合は、該当の行にカーソルを移動して「dd」を入力します。複数行をカットしたい場合は、該当の行を反転させて「dd」を入力します。

「p」コピー又はカットした行をペーストする

「yy」でコピー又は「dd」」でカットした行は、「p」でカーソルのある行にペーストできます。

viエディタの検索

コマンドモードで有効となる検索コマンドを解説します。

/検索文字列:前方検索

[/]キーを押すと画面左下に「/」が表示されて、その後、検索したい文字列を入力

?検索文字列:後方検索

[?]キーを押すと左下に「?」が表示されて、その後、検索したい文字列を入力

n:次の候補

前方検索又は後方検索した後、引き続き次の検索候補を探したい時に[n]キーを押下

N:前の候補

次の候補を探したが、前の検索候補へ戻りたい時に[N]キーを押下

viエディタの置換

コマンドモードで有効となる置換コマンドを解説します。

最初に検索された文字のみ置換

:s/置換対象文字列/置換後文字列/

最初に検索された「置換対象文字列」のみ「置換後文字列」に置換されます。

カーソルのある行のみ置換

:s/置換対象文字列/置換後文字列/g

コマンドの末尾に「g」を加えることで、カーソルのある行全ての「置換対象文字列」が「置換後文字列」に置換されます。

指定した行のみ置換

:最初の行番号,最後の行番号 s/置換対象文字列/置換後文字列/g

(例):5,10 s/置換対象文字列/置換後文字列/g

上記の例だと、5行目から10行目までの範囲だけを置換されて、他の行は置換されません。

ファイル全体を置換

:%s/置換対象文字列/置換後文字列/g

「s」の前に「%」を加えることで、そのファイル全ての「置換対象文字列」が「置換後文字列」に置換されます。

「/」を置換

:%s;置換対象文字列;置換後文字列;g

(例):%s;/home/user1;/home/user2;g

「/」はコマンドで使用されるため、「/」という文字列を置換したい場合、置換コマンドで使用される「/」を「;」(セミコロン)に代えてコマンドを実行します。

viエディタの保存、終了

コマンドモードで有効となる保存及び終了コマンドを解説します。

「:q」保存せずに終了

保存せずにエディタが終了します。もし、更新した箇所があった場合、「更新されている」旨の警告メッセージが出るので、それでも保存せずに終了したい場合は、下記で紹介する「:q!」を使います。

「:q!」更新した行も保存せずに強制終了

内容を更新していても、更新した内容を破棄して強制終了します。

「:w」保存(終了はしない)

今まで更新した箇所を保存します。エディタは終了せず、引き続き編集が可能です。

「:wq」保存して終了

今まで更新した箇所を保存した後にエディタは終了します。

「 . 」直前に実行した操作を繰り返す

直前に実行した操作を、「 . 」(ピリオド)を押した分だけ繰り返し実行できます。

「u」直前に実行した操作を取り消す

直前に実行した操作を、「u」を押した分だけ取り消しできます。

「:r (別のファイル名)」別ファイルから読み込んだ内容を次行にペーストする

別のファイルの内容をカーソルの次の行へペーストできます。

「:r! (Linuxのコマンド)」Linuxコマンドの実行結果を次行にペーストする

「ls」等のLinuxコマンドの実行結果を、カーソルの次の行へペーストできます。

「:h」viエディタのマニュアルを表示する

viエディタのマニュアルが表示されます。

編集モードで使用できるコマンド

以前のviエディタは「コマンドモード」でしかコマンドが使えなかったのですが、その後の仕様変更で、「編集モード」の時でも「del」キーで文字を消したり、矢印キーでカーソルを移動することができます。

ただ、基本的に「コマンドが使用できるのはコマンドモード」という認識で操作しましょう。