Linuxでのviコマンドの使い方。ファイルを閉じる、保存、検索などなど

Linuxを使用していると、必ず使用する「vi」。
「vi」が何かと言うと、ファイルを編集する際に使用するコマンドです。

インフラエンジニアになりたてのころは、「vi」を打つと画面が切り替わって、元の画面に戻れないと焦ったものです。

そこでこの記事では、初級的なインフラエンジニアがよく使う「vi」コマンドの使い方を説明していきます。
ちなみに自分はCentOSしか触ったことないので、CentOSでの使用方法となります。

Linux系だと多分どれも一緒だと思いますが、自信はないのでCentOS以外で試す方は上手く動作しないかもしれません。

今回はCentos8.3で書きます。

ファイルを開く

今回はファイルがなかったので作成しますが、下記画像のように「vi」+ スペース + 「○○.txt」で対象のファイルを開きます。

開くと、何も入力していないのでまっさらな画面が出てきます

文字を入力する

viでファイルを開いただけでは文字を入力することは出来ません。

なぜなら今の状態は「コマンドモード」だからです。

viには二種類のモードがあります。

viのモード
  • コマンドモード
    コマンドモードでは、文字の入力以外の作業を行うことが出来ます。例えばviで開いているファイルを閉じたり、ファイルを保存したり、文字を検索したり、その他にもたくさんのことが出来ます。
  • インサートモード
    こちらは単純に文字を入力することが出来るモードです。

インサートモードに切り替えるには下記のどれかを使用します。自分が使いやすいものを利用してください。

ちなみにインサートモードからコマンドモードに切り替えるには、PCの左上にあると思われる『Esc』キーを押します。

ではコマンドモードから、文字が入力できるインサートモードに切り替えるコマンドを書いていきます。

コマンドモードからインサートモード(文字が入力できる状態)に切り替える方法
  • i
    カーソル位置の前に文字を入力できます。
  • I
    カーソル位置の先頭から文字を入力できます。
  • a
    カーソル位置の後ろに文字を入力できます。
  • A
    カーソル位置の一番後ろから文字を入力できます。
  • o
    カーソルの一つ下に行ができ、そこから文字を入力できます。
  • O
    カーソルの一つ上に行ができ、そこから文字を入力できます。

ファイルを閉じる

viでファイルを閉じる方法は何種類かあります。ここでは私自身が良く使うものを書いておきます。

下記に書いてあるコマンドですが、全てPCの左上にあると思われる『Esc』キーを押しコマンドモードでないと機能しないで注意してください。

viで開いたファイルを閉じる方法
  • :q!
    ファイルを保存せず閉じるコマンドです。
  • :wq
    ファイルを保存して閉じるコマンドです。

インフラエンジニアを1年していて、正直この上記二つしか使ったことありません。
ただもう2つほど書いておきます。

  • :w
    上書き保存するコマンドです。ファイルは閉じません。
  • :w!
    強制的に上書き保存するコマンドです。

ファイル内の文字を削除

ファイル内の文字を削除するには、コマンドモードで下記を入力します。

ファイル内の文字を削除する方法
  • dd
    カーソル行を切り取り。つまり削除とコピーを同時に行っています。
  • x
    カーソルの後ろの文字を1文字削除。キーボードの「Deleate」と同じです。

ファイル内の文字をコピー&ペースト

ファイル内の文字をコピー&ペーストするには、コマンドモードで下記を入力します。

ファイル内の文字をコピー&ペーストする方法
  • yy
    カーソル行の文字をコピーします。
  • p
    カーソルの下の行にコピーした文字を貼り付けします。
  • P
    カーソルの上の行にコピーした文字を貼り付けします。

ファイル内の文字を検索

ファイル内の文字を検索するには、コマンドモードで下記を入力します。

ファイル内の文字を検索する方法
  • /○○(検索したい文字)
    カーソルより下方向で検索します。
  • ?○○(検索したい文字)
    カーソルより上方向で検索します。
  • n
    「/」か「?」にて検索した状態で、カーソルより下方向に次の該当文字を検索し移動します。
  • N
    「/」か「?」にて検索した状態で、カーソルより上方向に次の該当文字を検索し移動します。

ファイル内で行番号を振る

ファイル内で行番号を振るには、コマンドモードで下記を入力します。

コマンドモードでの便利なコマンド
  • :set number
    行番号が振れます。
  • :set nonumber
    行番号が消えます。
  • :〇(行番号)
    その行に移動できます。