InfraAcademy

InfraAcademy Blog

viコマンドの使い方とは?Linuxでファイルを編集する方法を初心者向けに解説

| #Linux #Linux初心者 #Linux入門
Linuxをブラウザで試してみる

Linux・ネットワーク・AWSを、環境構築なしで実践学習できます

こんにちは、インフラエンジニアのryuです。

今回の記事では、Linuxでファイルを編集するときに使うviコマンドの基本的な使い方を解説します。

Linuxを学び始めると、設定ファイルを変更するためにviを使う場面が出てきます。しかし、viは一般的なメモ帳とは操作方法が大きく異なります。

「文字を入力しているのに何も表示されない……」 「編集できたけれど、保存して終了する方法が分からない」 「間違えて操作して、画面から抜け出せなくなった」

このような経験をした方も多いのではないでしょうか。

viには複数のモードがあり、現在のモードによって同じキーの役割が変わります。最初は難しく感じますが、基本的な流れは次の4ステップです。

  1. vi ファイル名でファイルを開く
  2. iを押して文字を入力する
  3. Escを押してノーマルモードへ戻る
  4. :wqを入力して保存・終了する

まずは、この流れを実際に試しながら覚えていきましょう。

Linuxのviコマンドとは?

viは、LinuxやUNIX系OSで利用されるテキストエディターです。ターミナル上で動作し、テキストファイルや各種設定ファイルを編集できます。

たとえば、次のような作業で使用します。

  • Webサーバーの設定ファイルを編集する
  • ネットワークの設定を変更する
  • シェルスクリプトを作成する
  • ログやテキストファイルを確認・修正する
  • SSHで接続したサーバー上のファイルを編集する

デスクトップ画面のないサーバーでも利用しやすいため、Linuxを扱うインフラエンジニアにとって重要な操作の一つです。

環境によっては、viを実行すると機能を拡張したVimが起動します。VimはVi IMprovedの略で、viとの互換性を持ちながら、構文の色分けや補完などの機能が追加されています。

初心者のうちは、viとVimの細かな違いよりも、共通して使える基本操作を覚えれば問題ありません。

viには複数のモードがある

viが初心者にとって難しく感じる大きな理由は、操作モードが分かれていることです。

最低限、次の3つを覚えましょう。

モード 主な役割
ノーマルモード カーソル移動、削除、コピーなどの操作をする
インサートモード 文字を入力・編集する
コマンドラインモード 保存、終了、検索、置換などを実行する

viでファイルを開いた直後は、ノーマルモードです。そのまま文字キーを押しても、一般的なエディターのように文字は入力されません。

たとえば、ノーマルモードでxを押すと、文字の入力ではなく、カーソル位置の文字を削除します。

文字を入力するときはiを押してインサートモードへ移動します。入力を終えたらEscを押し、ノーマルモードへ戻ります。

保存や終了を行うときは、ノーマルモードで:を押します。画面下部へコマンドを入力できる状態になるため、続けてwqなどを入力します。

viでファイルを開いて編集する

実際にviを使って、ファイルを作成してみましょう。

次のコマンドを実行します。

vi test.txt

現在のディレクトリにtest.txtが存在しない場合は、新しいファイルとして開かれます。すでに存在する場合は、そのファイルの内容が表示されます。

viまたはVimがインストールされていないUbuntuやDebian系の環境では、次のコマンドでVimをインストールできます。

sudo apt update
sudo apt install vim

Red Hat系のディストリビューションでは、環境に応じて次のようなコマンドを使用します。

sudo dnf install vim

コマンドを実行すると、次のような編集画面が表示されます。

viでファイルを編集

新しいファイルの場合は、内容が空の状態です。

iを押して文字を入力する

ファイルを開いた直後はノーマルモードなので、そのままでは文字を入力できません。

キーボードのiを押してください。インサートモードへ移動し、文字を入力できるようになります。

環境によっては、画面下部へ-- INSERT --と表示されます。

viで文字を入力

たとえば、次のような文字を入力してみましょう。

Hello Linux
vi command practice

入力が終わったら、キーボードのEscを押します。インサートモードが終了し、ノーマルモードへ戻ります。

現在のモードが分からなくなったときも、まずEscを押す習慣をつけると操作しやすくなります。

ファイルを保存して終了する

文字を入力したら、ファイルを保存してviを終了します。

ノーマルモードで次のコマンドを入力してください。

:wq

最後にEnterを押すと、ファイルを保存してviが終了します。

viのコマンドを使う

:wqの意味は次のとおりです。

  • w:writeの略で、変更内容をファイルへ保存する
  • q:quitの略で、viを終了する

順番は:wqです。:qwでは正しく実行できないため注意してください。

Linuxのコマンド画面へ戻ったら、次のコマンドで保存内容を確認できます。

cat test.txt

入力した文字が表示されれば、保存できています。

viを保存せずに終了する方法

編集内容を保存せずにviを終了したい場合は、次のコマンドを使用します。

:q!

qは終了、!は強制実行を表します。

ファイルを変更した状態で:qだけを実行すると、保存されていない変更があるため終了できないというエラーが表示されます。この場合は、次のどちらかを選びます。

  • 保存して終了する::wq
  • 保存せずに終了する::q!

画面から抜け出せなくなったときは、慌てずに次の順番で操作してください。

  1. Escを数回押す
  2. :q!と入力する
  3. Enterを押す

編集内容は破棄されますが、viを終了できます。

保存だけを行い、viを終了しない場合は次のコマンドを使用します。

:w

インサートモードへ移動するコマンド

文字を入力するためのコマンドはiだけではありません。

コマンド 動作
i カーソル位置の前から入力する
a カーソル位置の後ろから入力する
I 行の先頭から入力する
A 行の末尾から入力する
o 現在の行の下に新しい行を作って入力する
O 現在の行の上に新しい行を作って入力する

最初はiだけでも十分です。

慣れてきたら、行末へ文字を追加するときはA、次の行へ追記するときはoを使うと、カーソル移動を減らせます。

いずれのコマンドでも、入力を終えるときはEscを押してノーマルモードへ戻ります。

viでカーソルを移動する方法

ノーマルモードでは、矢印キーでカーソルを移動できます。また、viでは次のキーもカーソル移動に使います。

キー 移動方向
h 左へ移動する
j 下へ移動する
k 上へ移動する
l 右へ移動する

さらに、次のコマンドを使うと長いファイル内を効率よく移動できます。

コマンド 動作
0 行の先頭へ移動する
$ 行の末尾へ移動する
gg ファイルの先頭へ移動する
G ファイルの末尾へ移動する
数字G 指定した行へ移動する
:数字 指定した行へ移動する

たとえば、27行目へ移動する場合は、次のどちらかを入力します。

27G
:27

設定ファイルが長い場合でも、行番号を指定すれば目的の場所へすぐ移動できます。

指定した行数に移動

行番号を常に表示したい場合は、ノーマルモードで次のコマンドを実行します。

:set number

非表示へ戻す場合は、次のコマンドです。

:set nonumber

viで文字列を検索する方法

ファイル内の文字列を検索する場合は、ノーマルモードで/に続けて検索したい文字列を入力します。

たとえば、serverを検索する場合は次のように入力します。

/server

Enterを押すと、該当する文字列へ移動します。

同じ文字列を続けて検索する場合は、次のキーを使います。

  • n:次の検索結果へ移動する
  • N:前の検索結果へ移動する

設定ファイルの中から特定の項目を探すときに便利です。

viで文字や行を削除する方法

ノーマルモードでは、次のコマンドで文字や行を削除できます。

コマンド 動作
x カーソル位置の1文字を削除する
dw カーソル位置から単語の末尾まで削除する
dd 現在の1行を削除する
数字dd 指定した行数を削除する
dG 現在位置からファイル末尾まで削除する

たとえば、3行をまとめて削除する場合は次のように入力します。

3dd

viのdによる削除は、切り取りに近い動作です。削除した内容は、pを押すとカーソル位置の後ろへ貼り付けられます。

p

間違えて削除した場合は、uを押すと直前の操作を取り消せます。

u

取り消した操作をやり直す場合は、Ctrlrを同時に押します。

viを使うときの注意点

viで設定ファイルを編集するときは、いきなり変更するのではなく、先にバックアップを作成しましょう。

たとえば、example.confを編集する場合は、次のようにコピーを作ります。

sudo cp example.conf example.conf.bak
sudo vi example.conf

設定を間違えてサービスが起動しなくなった場合でも、バックアップから戻しやすくなります。

また、管理者権限が必要なファイルは、一般ユーザーでは保存できないことがあります。その場合は、必要性を確認したうえでsudo viを使用します。

sudo vi /etc/example.conf

ただし、root権限での編集はシステムへ大きな影響を与える可能性があります。変更する設定の意味を確認し、バックアップを取ってから作業してください。

viコマンドを実際に操作しながら学ぶ

viは、コマンド一覧を読むだけでは身につきにくい操作です。

まずは練習用ファイルを作り、次の操作を繰り返してみましょう。

  1. ファイルを開く
  2. iで文字を入力する
  3. Escでノーマルモードへ戻る
  4. /で文字列を検索する
  5. ddで行を削除する
  6. uで操作を取り消す
  7. :wqで保存して終了する

InfraAcademyのLinux入門講座では、viによるファイル編集だけでなく、Linuxコマンド、ユーザー管理、権限、プロセス、ログ、ネットワーク設定などを実際に操作しながら学習できます。

ブラウザ上のLinux環境を利用できるため、VirtualBoxなどを準備しなくてもコマンドを練習できます。

Linuxサーバーと通信するネットワークの仕組みも学びたい方は、ネットワーク入門講座がおすすめです。また、Linuxの知識を使ってクラウド上にサーバーを構築したい方は、AWS講座へ進むと、EC2などの操作へ知識をつなげられます。

viコマンドの使い方まとめ

今回は、Linuxのviコマンドについて解説しました。

  • viは、ターミナル上でファイルを編集するためのテキストエディター
  • ファイルを開いた直後はノーマルモードになっている
  • iを押すと文字を入力できる
  • 入力後はEscを押してノーマルモードへ戻る
  • :wqで保存して終了する
  • :q!で変更を保存せずに終了する
  • /文字列で検索し、nで次の検索結果へ移動する
  • ddで行を削除し、uで直前の操作を取り消せる

最初から多くのコマンドを暗記する必要はありません。

まずは、iEsc:wq:q!の4つを使い、ファイルを開く、編集する、保存する、終了するという基本操作を身につけましょう。基本的な流れを繰り返すと、Linuxサーバーの設定ファイルも落ち着いて編集できるようになります。

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る