監視オペレーターから設計構築へ這い上がった僕がインフラエンジニアに向けたキャリアハックや考え方、ナレッジ等をお伝えします

元監視者のエンジニアブログ

【現役エンジニアが語る】Linuxのviコマンドの操作とは?

 

【現役エンジニアが語る】Linuxのviコマンドの操作とは?

 

あなた

Linuxのviコマンドの操作方法について知りたい!
現役エンジニアはどのようにviコマンドを使っているんだろう?

 

こんなお悩みを現役インフラエンジニアが解決します。

 

☑本記事の内容

・そもそもviとは?
・viのモードについて
最低限覚えた方が良い操作コマンドとは?
・viコマンドを覚えるメリットとは?

 

☑本記事の信頼性

・Linuxの運用~設計構築まで経験有り
・業務でのLinux歴5年程

 

このように、Linuxを扱った経験が5年とそこそこ長いです。

 

また、自宅の仮想環境(Hyper-V等)にCentOSを構築して、たまに遊んだりしています。
最近では、minikubeでKubernetesの学習をしております。

 

また、以下媒体でもLinux含め技術のアウトプットをしています。

QiitaはほぼAWS寄りになりますが、
Linuxコマンドについての技術情報も発信しております。

 

動画も投稿しております。
本記事と併せてご覧頂ければ幸いです!

 

 

 

今回はLinux歴5年で技術情報の発信も積極的に実施している僕が、viコマンドについて解説していきたいと思います!

では、本題に入っていきたいと思います。]

 

そもそもviとは?

 

Linuxのテキストエディタになります。

Windowsで言う「メモ帳」や「サクラエディタ」のようなものです。

 

viの特徴

・全てキーボード操作で完結するエディタ
・Linuxにはデフォルトでインストールされている

 

業務でLinuxを扱う場合は、必ずと言っていいほど使用するエディタになります。

 

 

viのモードについて

viには以下のように「モード」という概念があります。

 

・コマンドモード
・入力モード

 

それでは、掘り下げていきたいと思います。

 

コマンドモード

 

文字入力以外の編集作業ができるモードになります。

 

コマンドモードでできることはこちらになります。

 

コマンドモードでできること(例)

・viエディタの終了と保存
・viエディタを開いた状態でLinuxコマンド操作
・文字列の削除
・カーソル移動
・各行に行数を表示する

 

このようにコマンド操作でいろいろなことができます。

 

全て覚えるとキリがないので、本記事では僕がよく使用するもののみ解説します。

 

入力モード

 

入力モードとは、文字を手動入力できるモードになります。
別名、「インサートモード」とも言います。

 

入力モードでできることはこちらになります。

 

入力モードでできること(例)

・十字キーの操作でカーソルを動かすことが可能
・文字列削除もWindowsと同様に[Back Space]で可能

 

このように、初心者でも操作しやすいモードとなっています。

 

コマンド操作に自信がない場合は、こちらのモードを使用することがおすすめです。

 

最低限覚えた方が良い操作コマンドとは?

 

viエディタの操作コマンドは覚えるものが多いです。

そのため、現役インフラエンジニアである僕が最低限覚えた方が良いコマンドについてまとめました。

 

・viエディタ起動
・文字の挿入/モード切替
・viエディタの終了と保存
・カーソルの移動
・文字の削除
・検索/行数表示

 

それでは、ご紹介していきたいと思います。

 

viエディタ起動

viエディタの起動方法についてご紹介します。

 

  • 新規ファイル

以下のようにviコマンドを実行します。

 

実行コマンド

vi ファイル名

 

実際に実行すると以下のようなコマンドモードで起動します。

 

viエディタ画面(コマンドモード)

~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"test" [New File]

 

  • 既存ファイル

既存ファイルを編集する際も同様になります。

 

編集する既存ファイル

[root@minikube test]# cat test
test
test
test
testtest

 

実行コマンド

vi test

 

既存のファイルも同様にviエディタにて編集可能です。

 

viエディタ画面(コマンドモード)

test
test
test
testtest
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"test" 4L, 24C

 

viエディタは、このように「vi ファイル名」で起動可能です。

 

文字の挿入/モード切替

文字の挿入とモード切替についても解説します。

 

文字の挿入(コマンドモード→入力モード)

コマンドモード→入力モードに切り替える場合は、以下のコマンドを入力します。

 

コマンド 機能
i カーソルの前にテキストを挿入
a カーソルの後ろにテキストを挿入

 

実際に入力するとこのようになります。
※既存ファイルにて試しています。

 

  • i

カーソルの前にテキストが挿入されます。

 

「i」コマンド入力前

 

「i」コマンド入力後

入力モードに切り替わる。

 

文字の入力

カーソルの前から文字が入力されている。

 

  • a

カーソルの後ろにテキストが挿入されます。

 

「a」コマンド入力前

 

「a」コマンド入力後

入力モードに切り替わる。

 

文字の入力

カーソルの後ろから文字が入力されている。

 

このように、コマンドモード→入力モードの切り替えは、「i」or「a」にて実施します。

 

モード切替(入力モード→コマンドモード)

入力モード→コマンドモードへの切り替えは、「Esc」キーにて実施可能です。

 

では、実際にやっていきたいと思います。

 

  • 入力モード状態

 

  • コマンドモードへ移行

「Esc」キーを押下し、「INSERT」の表示が消えることを確認

 

このように、「Esc」キーで入力モード→コマンドモードへの切り替えを実施します。

 

viエディタの終了と保存

viエディタの終了と保存については以下になります。

 

コマンド 機能
:q ファイルを保存しないでviエディタを閉じる。
:q! ファイルを保存しないでviエディタを閉じる。(変更内容を保存する必要がない場合)
:w ファイルの内容を保存する。
:wq ファイルの内容を保存してviエディタを閉じる。

 

それでは、1つ1つ解説していきたいと思います。

 

  • :q

ファイルを保存しないでviエディタを閉じるコマンドになります。

 

:q

 

使用する際はコマンドモードに変更後に、「:q」と入力しEnterを押下します。

 

 

  • :q!

変更されたファイルを「q」で閉じようとすると、以下エラーメッセージが表示されます。

 

E37: No write since last change (add ! to override)

 

このような場合は、以下コマンドを実行します。
※強制的にファイルを保存せずに閉じます。

 

:q!

 

使用する際はコマンドモードに変更後に、「:q!」と入力しEnterを押下します。

 

 

  • :w

ファイルの内容を保存する場合は、以下コマンドを実施します。

 

:w

 

以下のようにコマンドモードで実行します。

 

 

  • :wq

ファイルの内容を保存して閉じる場合は、以下コマンドを実行します。

 

:wq

 

以下のようにコマンドモードで実行します。

 

 

ファイルの保存と終了のコマンドについては、以上になります。

 

モード切替の方法とファイルの保存終了方法を知っていれば、viエディタ操作はなんとかなります。

さっとん

 

カーソルの移動

カーソルの移動については、以下になります。
コマンドモードにて実行するコマンドになります。

 

コマンド 機能
j カーソルを上に移動する
k カーソルを下に移動する
h カーソルを左に移動する
l カーソルを右に移動する
gg 1行目に移動する
G(Shif+G) 最終行に移動する

 

図にすると以下のような形になります。

 

 

最初は覚えづらいかもしれませんが、実際に操作すると慣れていきます。

 

文字の削除

文字の削除コマンドは以下になります。
コマンドモードにて実行するコマンドになります。

 

コマンド 機能
x 一文字削除
dd 一行削除
:%d ファイル内容全て削除

 

それでは、コマンドの実行例についてご紹介していきたいと思います。

※他にも削除コマンドはありますが、僕がよく使用するコマンドだけ抜粋しました!

 

  • x

ファイル内容から1文字削除する例になります。

 

「x」コマンド実行前

 

「x」コマンド実行後

 

  • dd

指定の1行を削除するコマンドになります。

 

「dd」コマンド実行前

 

「dd」コマンド実行後

 

一行消えていることが確認できます。

 

  • :%d

ファイル内容を全て削除するコマンドになります。

 

「:%d」コマンド実行前

 

「:%d」コマンド実行後

 

ファイルから全ての文字が消えていることが確認できます。

 

文字の削除コマンドは以上になります。

 

他にも文字の削除コマンドはありますが、触りながら徐々に覚えていく形で問題ないです。
これだけでも実際の現場で通用します。

さっとん

 

検索/行数表示

文字列の検索と行数の表示するためのコマンドについては、以下になります。
コマンドモードにて実行するコマンドになります。

 

コマンド 機能
:set number ファイル内容の各行に行数を表示する
:/<検索したい文字列> ファイル内容の中から該当の文字列を検索する

 

それでは、コマンドの実行例についてご紹介したいと思います。

 

  • :set number

ファイル内容の各行に行数を表示させます。

 

「:set number」実行前

 

「:set number」実行後

 

このように行数が表示される。

 

  • :/

検索したい文字列を検索する。

 

「:/」コマンド実行前

 

「:/」コマンド実行後

 

このように、カーソルが「aaaa」の場所に移動します。

 

これ、覚えておくと非常に便利です!!

さっとん

 

viコマンドを覚えるメリット

 

viコマンドを覚えるメリットは、こちらになります。

 

・Linux環境下での編集作業ができるようになる
・コマンド操作で全て完結する

 

では、掘り下げていきたいと思います。

 

Linux環境下での編集作業ができるようになる

viコマンドを覚えることにより、Linux環境下での編集作業ができるようになります。

 

ポイント

・FTPソフトでファイルをローカルに落とさなくても、直接編集作業ができる。
・物理サーバーのIPMI画面等、ターミナルが使用できない環境でも編集作業ができる。

 

こちらのポイントのように、viコマンドを覚えるとファイルの編集作業が効率的にできるようになります。

 

実際に業務でviコマンドでのファイルの編集をしていますが、効率的だと感じます。

さっとん

 

コマンド操作で全て完結する

viコマンドを覚えると、コマンド操作で全て完結します。

 

例えば、

  • ファイル編集時にわざわざFTPソフトを使用したくない
  • ファイル内容を少しだけ編集したい

場合に、viコマンドは非常に便利です。

 

コードを一から書いていく場合には、VSCode等を使用すると思います。
しかし、少しだけ編集したい場合に別のエディタを立ち上げるのは面倒です。

 

そのようなときに、viコマンドは便利です!

 

 

まとめ : 覚えることは多いが、触れば慣れる!

 

viコマンドの操作について解説しました。

今回紹介したviコマンドの操作を一通り覚えた場合、実務ではなんとかなります。

 

viコマンドの操作は、ここで紹介したコマンド以外にもたくさんあります。
いきなり全て覚えようとすることは非効率です。
使用しながら、徐々に覚えていくことが効率的です!

 

viコマンドは、書籍を読むだけだと身につかないです。
自宅PCやクラウド(AWS等)にLinux環境を構築して、そこでviコマンドの操作を実際にやってみることをおすすめします。

 

現場からは以上です!!

 

 

TwitterとYouTubeをやっています。
※インフラエンジニアの経験談や技術について発信しています。

 

 

  • B!