viエディタってなんだろう

# viエディタの基本
viエディタは**UNIX系のOS**（LinuxやMAC）に標準でインストールされているテキストエディタです。
コマンドプロンプトを起動してその画面でコマンドを入力することで実行することができます。

### UNIX系OSって？
普段私たちが使っているPCやスマートフォンをはじめ、一般的なコンピュータはオペレーションシステム（OS）によって制御されています。
コンピュータのOSは用途によってさまざまな種類があり、UNIX系OSはそのうちの一つで**サーバー向け**のOSです。
ビールサーバーという言葉があるように、サーバーとは何かを**提供する存在**という意味になります。
普段私たちが使っているコンピュータはサーバーとは対になる、**クライアント**であり情報を受け取る側です。
つまり、<font color="red">UNIX系OSは情報を提供する側のコンピュータに向いているOS</font>ということです。
### コマンドプロンプトって？
コマンドを入力することでパソコンに命令を送り、操作することができる画面です。
映画やドラマでハッカーがカタカタしてるあのシーン（黒画面に文字がたくさん）をイメージすればどんなものか想像つくと思います。

## viエディタの起動方法

UNIX系OSのコマンドプロンプトで下記のように入力します。

```
vi　　　
⇒保存する際に、ファイル名の入力が必要。保存コマンドのところで解説！　　　
```
```
vi ［ファイル名］
```
指定したファイル名が存在していればそのファイルが開かれて、
存在していない場合は指定した名前でファイルが作成されます。
<font color="red">※注意</font>　
ファイルを編集するLinuxのlsコマンドでその階層に該当ファイルが存在しているのか、
また新規作成する際は存在していないか確認してから使いましょう。
```
vi ［フォルダ名］
```
そのフォルダの中にあるファイルを選択し編集することができます。
また、さらにその配下のフォルダを参照しファイルを選択することもできます。

## viエディタの3つのモード
### １，コマンドモード
viエディタを起動したときはこのモードになっており、下記で紹介するコマンドはこのモードで使えます。

### ２，編集モード（画面左下に「挿入」や「insert」と表示されます。）
ファイルの内容を編集するモードで基本的な操作は日常的な入力や削除と変わりません。
実は編集モードに変更する方法はいくつかあり、目的別に使いこなせると「こやつ…なかなかやりよる」って思われるかもしれません…笑

今回は7つ紹介致します。
コマンド
①　i　⇒　現在のカーソルの<font color="red">前</font>からモードが切り替わる。
②　a　⇒　現在のカーソルの<font color="red">後ろ</font>からモードが切り替わる。
③　I　⇒　現在のカーソルが<font color="red">行頭に移動</font>しモードが切り替わる。
④　A　⇒　現在のカーソルが<font color="red">行末に移動</font>しモードが切り替わる。
⑤　o　⇒　現在のカーソルの<font color="red">下の段に空行を作成</font>し、モードが切り替わる。
⑥　O　⇒　現在のカーソルの<font color="red">上の段に空行を作成</font>し、モードが切り替わる。
⑦　s　⇒　現在のカーソルの<font color="red">文字を削除</font>しモードが切り替わる。

終了するには[esc]を押します。

### ３，EXモード
viを拡張することができるモードになります。
コマンドモードで「：set」と入力することで変化しその後に追加してコマンドを入力していきます。
編集しているファイルに行番号を付けることができたり、自動字下げ機能を実装することができます。

# 基本的なコマンド
## 移動コマンド
viエディタではコマンドプロンプト上で実行しており、もちろんマウスでカーソルを移動させることができずキーボードを使ってカーソルの移動する必要があります。
```
コマンド　　　　
h　　　　⇒　　カーソルを左へ移動
j　　　　⇒　　カーソルを左へ移動
k　　　　⇒　　カーソルを左へ移動
l　　　　⇒　　カーソルを左へ移動
```
**※vimの場合矢印キーを使って移動もできます。**
⇒viから発展した高性能テキストエディタ（現在はこちらがメイン）
　基本的な使い方はほとんど変わりません。

その他覚えておくと便利な移動系コマンド
```
コマンド　　　　
^　　　　　⇒　　カーソルを行頭へ移動
$　　　　　⇒　　カーソルを行末へ移動
G　　　　　⇒　　カーソルを最終行行頭へ移動
e　　　　　⇒　　カーソルを単語末へ移動
Ctrl + B　⇒　　１ページ上へ移動
Ctrl + F　⇒　　１ページ下へ移動
```
## コピー・貼り付け・削除コマンド
コピー
```
コマンド　　　　
yy　　　　　⇒　　１行コピー
yl　　　　　⇒　　１文字コピー
yw　　　　　⇒　　１単語コピー
```
貼り付け
```
コマンド　　　　
p 　　　　　⇒　　カーソルの後ろへ貼り付け
```
削除
```
コマンド　　　　
x          ⇒　　カーソルの文字を削除
X          ⇒　　カーソルの左の文字を削除
dl　　　　　⇒　　１文字削除　　　　
dw　　　　　⇒　　１単語削除
dd　　　　　⇒　　１行削除
⇒最初に数字を入れることで任意の桁数削除できます。(3dl ⇒ 3文字削除)
d0　　　　　⇒　　カーソルから行頭まで削除
d$　　　　　⇒　　カーソルから行末まで削除
```
## 検索、置換コマンド
検索
```
コマンド　　　　
f [検索したい文字]　　⇒　　同行から文字を右方向に検索
F [検索したい文字]　　⇒　　同行から文字を左方向に検索
/[検索したい文字列]　 ⇒　　ファイル全体から下方向へ検索
?[検索したい文字列] 　⇒　　ファイル全体から上方向へ検索
```
置換
```
コマンド　　　　
r　　                        ⇒　　1文字置換
R　　                        ⇒　　上書き（終了後はEsc）
:s/[文字列A]/[文字列B]/　     ⇒　　カーソル行で合致するすべての文字列Aを文字列Bに置換
:%s/[文字列A]/[文字列B]/　    ⇒　　全体で合致するすべての文字列Aを文字列Bに置換
:①,②s/[文字列A]/[文字列B]/g   ⇒　  ①行数から②行目で合致するすべて文字列Aを文字列Bに変更
?[検索したい文字列] 　        ⇒　　ファイル全体から上方向へ検索
```
## 保存・終了コマンド
```
コマンド　　　　
:q　　⇒　　終了
:q!　 ⇒　  変更を保存せずに終了
:w　  ⇒　　上書き保存
:wq　 ⇒　　保存して終了
```
※**vi起動時にファイル名を指定しなかった場合**、上記のコマンドの加えてスペースを空けて入力することでに任意のファイルを作成することができます。
```　　　　
:wq test.txt　　
```

## 元に戻す・やり直すコマンド
Windowsでいう［ctrl］ + z　と［ctrl］ + y　に当たるコマンドになります。

```
コマンド　　　　
u　　      　 ⇒　　元に戻す（直前の編集をその一つ前の状態に戻す）
［ctrl］ + r　⇒　　やり直す（直前の動作をやり直す）
```

## おまけ
EXモードの時に少し触れた、ファイルに行番号を付けるコマンドです。
:setでEXモードに変更した後にnumberと入力します。
```
コマンドモードで
:set number
```
実行前
```
日本一高い山は「富士山」3776ｍ
世界一高い山は「エベレスト」8848ｍ
宇宙一高い山は「オリンポス山」21230ｍ
```
実行後
```
１ 日本一高い山は「富士山」3776ｍ
２ 世界一高い山は「エベレスト」8848ｍ
３ 宇宙一高い山は「オリンポス山」21230ｍ
```
解除する場合にはこれ！
```
:set nonumber
```
## viコマンドまとめ
viエディタのコマンドを目的別にまとめてみました。
基本的なコマンドであれば本投稿をご覧いただければ使えるようになるのではないかと思います。
（本投稿には載っていないコマンドがまだまだあります。）
日常的に使っている方であれば、コマンドは把握していると思われますが、
たまに使うよっていう方であれば是非早見表的な感じで使っていただければと思います。