【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【導入実績 500社以上】AWS 構築・運用保守・監視サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【Linux初心者向け】できた!viコマンドで編集と保存

こんにちは!
株式会社ビヨンド四国オフィスのペルシャ猫、いのうえです。

今回はファイルを編集する「vi」コマンドについて!
オプション多くて検証に苦戦しました。

viコマンドってなんだ?

「vi」コマンドとは、「エディタを起動してー!」と命令するコマンドです。
そもそも「vi」がUnix系OSで使用されるテキストエディタのことを指しています。
同時にディレクトリにファイルが存在しない場合は、ファイル作成もしてくれます。
入社当初は、「エディタってそもそもなに???」って思ってましたが
Windowsでいうとこの「メモ帳」と考えるとわかりやすいですね。

viコマンドでファイルを作成し、編集しよう

まずは、「test」ディレクトリにviコマンドで「haruka」というファイル名を指定し、編集します。

[コード][root@test-aws-harukainoue test]# pwd
/root/テスト[/コード]
[root@test-aws-harukainoue test]# vi haruka

上記コマンドを実行すると「haruka」のノーマルモードに移動します。
この時はまだファイルは作成されていません。

-rw------ 1 root root 12288 Jun 23 01:21 .haruka.swp

このようなSWAPファイルが一時的に作成されます。
SWAPファイルとは、アプリケーションがクラッシュしてデータが消えてしまうことを防ぐために
viが開かれた時に作成され、viで編集後に自動で削除される一時的な記録ファイルのことです。
これにより、もしもviがシステムエラーで強制終了しても、保存前のデータが失われることを防ぐことが出来ます。
そのため「:w」が実行されたときに初めて「haruka」というファイルは作成される仕組みになっています。

ファイルの中身をviで編集する場合は、「i」キーを押し、「INSERT」モードにします。
挿入モードになると「haruka」ファイルの中に記述することが出来ます。
適当にプロフィールでも書いてみます。

井上明香(ペルシャ猫)<font></font>
趣味:料理<font></font>
好きなもの:いちごと猫<font></font>
<font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
-- 挿入 --[/コード]</font></font></pre>
「<strong>-- INSERT --</strong>」と表示されている間は、挿入モードになっています。
編集モードを抜ける時は「<strong>Esc</strong>」キーを押します。
<pre><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">[コード]:wq[/コード]</font></font></pre>
挿入モードでエディタに内容を記述し、保存すると同時に「haruka」というファイルも作成されました!
viコマンドは、ノーマルモードから挿入モードに移行することにより、文字が打てるようになります。
既存のファイルがviで開かれている場合は上書き保存され
新しいファイルを開いていた場合は、ファイルが新規作成されます。
<pre><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">[コード][root@test-aws-harukainoueテスト]# ll</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
合計 4</font></font><font></font><font style="vertical-align: inherit;"><font style="vertical-align: inherit;">
-rw-r--r-- 1 root root 83 6月21日07:42 はるか

:」でコマンドモードに戻り、「wq」で上書き保存が出来ます。 また、保存済みのファイルを閲覧し終了する場合は、「q」 強制的にviを終了するときは「」を付けます。 例えばviで編集したものを変更内容を保存せず、破棄して終了する場合は

[コード]:q![/コード]

を使用します。

知っておくと便利!

■カーソル移動コマンド
矢印キーでも移動できますが知っておくと便利なカーソル移動コマンドをご紹介します。
※「Esc」キーを押下し、編集モードが終了していることを必ず確認して実行してください。

0(ゼロ) カーソルのある行の行頭にカーソルを移動する。
$ カーソルのある行の行末にカーソルを移動する
ぐぐ ファイルの先頭にカーソルを移動する。
G ファイルの末尾にカーソルを移動する。
ファイルの末尾にカーソルを移動する。

■削除コマンド

xもしくは、dl 現在のカーソル位置の文字を削除
DD 現在のカーソルのある行を削除
d$ 現在のカーソル位置から行末までを削除
d0 現在のカーソル位置から行頭までを削除
だわ 単語1つを削除
ディグ 最初の行まで削除
dG 最後の行まで削除

■ヤンク
コピー(ヤンク)したい場合は、yを使用します。
yの後ろにカーソル移動コマンドを指定して使用します。

やあ 現在のカーソル位置の行をヤンク

さいごに

viコマンドについてブログに書こうと思ったら、とにかく苦労しました。
viコマンドについて、分かってるようでわかってなかったんです。
エディタを編集した挿入モードから、コマンドモードにして、エディタを終了する正しい方法について。
それに含め、私のようなLinux初心者にわかる説明はどうすればいいのか・・・
トライアンドエラーを繰り返し、やっとこのブログが誕生しました!!(`・ω・´)

Linuxについて分かりやすく書いたブログもあるので、こちらもぜひ読んでみて下さい!
https://beyondjapan.com/blog/2022/02/linux/

【IT企業に就職するなら知っておけ!】今さら聞けないLinuxとは?(初心者向け編)

日々成長、日々前進。
毎日、私自身をアップデートしていかなければ!!!
最後まで読んでくださって、ありがとうございます。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
28
読み込み中...
28 票, 平均: 1.00 / 128
76,956
X facebook はてなブックマーク pocket
【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【2025.6.30 Amazon Linux 2 サポート終了】Amazon Linux サーバー移行ソリューション

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

【大阪 / 横浜】インフラエンジニア・サーバーサイドエンジニア 積極採用中!

この記事をかいた人

About the author

井上明香

システムソリューション部に所属。
ビヨンドに四国オフィス設立メンバーとして入社。IT業界に未経験で飛び込みました。
教育チームとして、新卒、中途、既存メンバーのカリキュラムの作成や研修の実施を行っています。
主な業務は、サーバーの運用保守。
とにかく、お客様のコンテンツを大切に思っています。
Webコンテンツ事業部、YouTubeチームにも所属。