こんにちは、インフラエンジニアのryuです。
今回の記事では、Linuxでファイルを編集するときに使うviコマンドの基本的な使い方を解説します。
Linuxを学び始めると、設定ファイルを変更するためにviを使う場面が出てきます。しかし、viは一般的なメモ帳とは操作方法が大きく異なります。
「文字を入力しているのに何も表示されない……」 「編集できたけれど、保存して終了する方法が分からない」 「間違えて操作して、画面から抜け出せなくなった」
このような経験をした方も多いのではないでしょうか。
viには複数のモードがあり、現在のモードによって同じキーの役割が変わります。最初は難しく感じますが、基本的な流れは次の4ステップです。
vi ファイル名でファイルを開くiを押して文字を入力するEscを押してノーマルモードへ戻る: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
コマンドを実行すると、次のような編集画面が表示されます。

新しいファイルの場合は、内容が空の状態です。
iを押して文字を入力する¶
ファイルを開いた直後はノーマルモードなので、そのままでは文字を入力できません。
キーボードのiを押してください。インサートモードへ移動し、文字を入力できるようになります。
環境によっては、画面下部へ-- INSERT --と表示されます。

たとえば、次のような文字を入力してみましょう。
Hello Linux
vi command practice
入力が終わったら、キーボードのEscを押します。インサートモードが終了し、ノーマルモードへ戻ります。
現在のモードが分からなくなったときも、まずEscを押す習慣をつけると操作しやすくなります。
ファイルを保存して終了する¶
文字を入力したら、ファイルを保存してviを終了します。
ノーマルモードで次のコマンドを入力してください。
:wq
最後にEnterを押すと、ファイルを保存してviが終了します。

:wqの意味は次のとおりです。
w:writeの略で、変更内容をファイルへ保存するq:quitの略で、viを終了する
順番は:wqです。:qwでは正しく実行できないため注意してください。
Linuxのコマンド画面へ戻ったら、次のコマンドで保存内容を確認できます。
cat test.txt
入力した文字が表示されれば、保存できています。
viを保存せずに終了する方法¶
編集内容を保存せずにviを終了したい場合は、次のコマンドを使用します。
:q!
qは終了、!は強制実行を表します。
ファイルを変更した状態で:qだけを実行すると、保存されていない変更があるため終了できないというエラーが表示されます。この場合は、次のどちらかを選びます。
- 保存して終了する:
:wq - 保存せずに終了する:
:q!
画面から抜け出せなくなったときは、慌てずに次の順番で操作してください。
Escを数回押す:q!と入力する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
取り消した操作をやり直す場合は、Ctrlとrを同時に押します。
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は、コマンド一覧を読むだけでは身につきにくい操作です。
まずは練習用ファイルを作り、次の操作を繰り返してみましょう。
- ファイルを開く
iで文字を入力するEscでノーマルモードへ戻る/で文字列を検索するddで行を削除するuで操作を取り消す:wqで保存して終了する
InfraAcademyのLinux入門講座では、viによるファイル編集だけでなく、Linuxコマンド、ユーザー管理、権限、プロセス、ログ、ネットワーク設定などを実際に操作しながら学習できます。
ブラウザ上のLinux環境を利用できるため、VirtualBoxなどを準備しなくてもコマンドを練習できます。
Linuxサーバーと通信するネットワークの仕組みも学びたい方は、ネットワーク入門講座がおすすめです。また、Linuxの知識を使ってクラウド上にサーバーを構築したい方は、AWS講座へ進むと、EC2などの操作へ知識をつなげられます。
viコマンドの使い方まとめ¶
今回は、Linuxのviコマンドについて解説しました。
- viは、ターミナル上でファイルを編集するためのテキストエディター
- ファイルを開いた直後はノーマルモードになっている
iを押すと文字を入力できる- 入力後は
Escを押してノーマルモードへ戻る :wqで保存して終了する:q!で変更を保存せずに終了する/文字列で検索し、nで次の検索結果へ移動するddで行を削除し、uで直前の操作を取り消せる
最初から多くのコマンドを暗記する必要はありません。
まずは、i、Esc、:wq、:q!の4つを使い、ファイルを開く、編集する、保存する、終了するという基本操作を身につけましょう。基本的な流れを繰り返すと、Linuxサーバーの設定ファイルも落ち着いて編集できるようになります。



