Linuxを扱えるようになろう(vi/vimエディタ)

こんにんちわ
[グローバルセンス株式会社](https://gb-sense.com)のsknaehiraです。

[前回](https://qiita.com/skanehira/items/cd600a8edde4f504f176)では、Linuxの基本操作について書いたので、
今回はLinux上でテキストを編集するエディタvi/vimについて紹介していきます。

viはLinuxで標準で使用できるテキストエディタです。
そして、vimはそのviの拡張版になります。

違いに関しては、[こちら](https://engineer-kit.info/?p=1200)の方を参照頂ければと思います。

# 最初に
viは編集モードとコマンドモードというのがあります。

編集モードはその名前の通り、ファイルの中身を編集するモードです。
ではコマンドモード？というとファイルの保存、文字検索をする時に使用するモードです。

最初はなれないと思いますが、
慣れたらどうってことないです。

では、使ってみましょう。

# アジェンダ
- ファイルを開く
- ファイルを編集
- ファイルを保存
- 文字列の検索
- 文字列の置換
- エディタ終了

# ファイルを開く
ファイルを開くときは以下の様に実行するだけです。

```shell-session
# vi 対象ファイル名
[skanehira@localhost ~]$ vi file
```

実行すると以下の画面になります。
存在しないファイルの場合は新規作成になるので、画面下部に[New File]と表示されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/66178/25941b21-5c7a-6a35-64af-656087cf25c4.png)

ファイルを開く時、オプションをつけることが出来ます。
基本使わないのですが、Rをつけると読み取り専用でファイルを開きます。
うっかり編集してしまわないようにしたいという方はRを付けて見て下さい。

```shell-session
[skanehira@localhost ~]$ vi -R file
```

ちなみに、読み取り専用で開いた後編集しようとすると画面下部に「W10: Warning: Changing a readonly file」と表示されます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/66178/6eab52d6-e296-d4d6-2935-aeadde88f790.png)

# ファイルを編集
ファイルを開いた後に、iを入力すると編集モードに移行し
画面最下部にINSERTと表示されます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/66178/8b03c937-d2a5-ba9e-00bb-a0c1051905a2.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/66178/6d950261-e6a2-ebc8-c24b-4266b5234fda.png)

# ファイルを保存する
ファイルを保存するには編集モードを抜けてコマンドモードで保存する必要があります。
編集モードを抜けるには以下の幾つかやり方がありますので、好きなやり方で保存してみて下さい。

ちなみに、自分はEscが一番慣れています。

| ショートカット |
|:-:|
| Ctr + [ |
| Ctr + C  |
| Esc  |

編集モードを抜けると以下の様にINSERTが表示されなくなります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/66178/1c44521f-ce05-2367-45fd-3894890689e9.png)

抜けた後は、[:w]と入力してEneterを押下すると保存されます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/66178/8320feb6-875c-4df3-6b11-3ec8e46b53a1.png)

保存後、「"file" 9L, 189C written」というように「ファイル名 行数, 文字数」が表示されます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/66178/4752d00c-d4d7-7d35-e632-5047b4e719dc.png)

# 文字列の検索
文字列を検索する時は「/」を入力後検索したい文字を入力してEnterを押下して下さい。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/66178/77c80d87-c5a0-0268-64f6-a4aa6820b2b5.png)

この場合「ad」を検索する事になります。
検索した文字が見つかった場合、カーソルが移動します。
欲を言えば標準で色を付けてほしいところですかね。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/66178/86e8a38f-d7bd-8972-26f9-c9619698515c.png)

検索に引っかかった文字が複数ある場合、そのまま「n」を押下すると次の文字にカーソルが移動します。
逆に前に移動したい時は「Shift + n」になります。

見つからない場合はこのようになります。（なぜこっちは色が付くのだ…）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/66178/ec362b49-9d20-a254-c7b8-a48e5130f0be.png)

# 文字列の置換
検索と来たらもちろん置換もあります。
文字列の置換のは場合は「:%s;置換対象文字;置換したい文字;g」を入力した後に以下の様に入力して下さい。

例えば、下記の場合は文字列aをpに置換します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/66178/f4b228c9-ab1f-c09f-0cbe-af51e008f29a.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/66178/66510b59-ae59-9d11-8e66-f09d9146e02a.png)

# エディタを閉じる
保存してエディタを終了したい時に「:wq」を入力して下さい。
保存し後にエディタを閉じます。

逆に保存せずに終了したい場合は「:q!」と入力して下さい。
そうすれば編集内容が保存されずにエディタを閉じます。

# 最後に
最低限上記の操作をできるようになれば、
Linuxのコンソール上でもファイルの中身を編集できます。

次回はLinuxのパッケージ管理システムであるyumについて書いていきます。
仕組みと使い方が分かればソフトウェアのインストールは楽ちんですb