【備忘録】Vim入門(ドットインストールまとめ）　

#はじめに
みんな大好きドットインストールで『Vim入門』の講座を学習したので、自分のレファレンス用に記事にしてみます。（レファレンス用なので、見辛いですがご容赦ください）
章分けは、ドットインストールのVim入門全18回に準じています。
vimtutorで学んだ内容も一部含まれます。

#1. Vimを使ってみよう
vimはunix系のエディター。Macには標準で搭載されているので、ターミナルを立ち上げ、

```
$ vim
```
と入力するだけで、vimが立ち上げる。

```
:q
```
で終了する。

```
$ vimtutor
```
でvimのチュートリアルを行うことができる。
はじめてvimを触るひとは、ドットインストールで全18回をザザッと一通り観たあと、vimtutorで実際にvimをターミナルでパチパチするのがおすすめ！（vim今日はじめて触った顔）

#2. Vimのモードについて
vimには4つのモードがある。
①ノーマルモード
②入力モード（i)→抜けるにはESC
③コマンドモード　(:)
④ビジュアルモード(v) 

なにか不具合が起きたらESCキーを連打！！！

#3. ファイルの保存、読み込み
保存

```
:w
```

名前をつけて保存したい

```　
:w ファイル名　
```

#4. 移動をマスターする
vim上の移動は矢印キーもしくはhjklキーで移動する

```
　h 左　 j 下　 k 上　 l 右
```
上のコマンドでは一行ずつしか移動できない。以下のコマンドで一気に移動することが可能。

```
gg  先頭へ
G   一番後ろへ
Ctrl +f / Ctrl + b 　画面単位の移動
w/b 単語単位の移動（前/後ろ）
```
#5. 移動をマスターする（２）
```
^ （キャレット）行頭へ
＄　行末へ
f (hoge）　hogeまでジャンプ　;で次に移動
％　対応するかっこにジャンプ
```
#6. ビジュアルモードについて
ビジュアルモードとは、選択系の操作を行うモード。

```
v 文字単位での選択 
V 行単位での選択
Ctrl + v  矩形選択
```
4章の移動を組み合わせると、ファイル全体選択が可能

```
gg（先頭へ移動）→V（行単位で選択）→G（一番後ろへ移動）
```


#7. カット、コピー、貼り付け

```
x 一文字削除
dd 行単位で削除
p ペースト
yy 行単位のコピー(yank)
```
変更に用いるコマンドの形式は　
オペレーター ［数値］ モーションの3つで構成される。

* オペレーター：dやc で何をするか
* 数値：そのコマンドを何回実行するか
* モーション：w（単語）や＄（行末）などの類で、テキストの何に対して実行するのか

例えば、

```
d3w
```
はカーソル位置から3単語（w）分削除する。
ちなみに上記コマンドは、以下でも同じ結果になる。

```
3dw
```

#8. 検索をしてみよう
```
/ hoge hogeを検索
n 下方向へ検索、N 上方向へ検索
```

```
＊　カーソルのある位置から完全一致する単語を下方向へ検索
＃　カーソルのある位置から完全に一致する単語を上方向に検索
```

#9. 置換をしてみよう
substituteのsで置換を実行できる。

```
:s 
```
カーソルからいちばん近くでヒットしたものを一つだけ置換する。（fooをbarへ置換）

```
:s/foo/bar/ 
```
カーソル行にあるヒットした箇所を全て置換する。

```
:s/foo/bar/g 
```

#10. 操作の取り消しをしてみよう

```
u 前回の動作を取り消す
U 行全体の変更を取り消す
取り消しのさらに取り消し　Ctrl+r
```
uは、繰り返し実行できるのでどんどん戻れる。

#11. ウィンドウを分割しよう
splitの略、spでウィンドウを上下に分割できる。

```
:sp 上下方向へ分離
Ctrl + w 分割したウィンドウ間を移動する
```

vertical splitの略である、vsで左右に分割できる。

```
:vs　左右方向へ分離
```
移動したウィンドウで以下のコマンド実行するとアクティブウィンドウでそのファイルを開いて作業できる。

```
:e ファイル名　
```


#12. タブを使ってみよう
タブを分けて作業したい時

```
:tabnew
```
新規タブでファイルを開く

```
:tabe ファイル名　
```
タブ間を移動する

```
gt 
```
タブを閉じる

```
:tabclose 
```
二つのファイルをタブで分けて開く

```
vim -p ファイル１ ファイル２ 
```
開いている全てのタブで置換を実施する

```
:tabdo %s/foo/bar/g 
```

#13.直前の操作を繰り返す

```
.（ピリオド）  直前の操作を繰り返す
```

#14. インデントを揃える
行単位でインデントを揃える

```
=
``` 

全体選択と組み合わせれば、全体のインデントを一気に揃えることができる!

#15. 補完機能を使ってみよう
変数名や関数名をもう一度使いたいときに以下のコマンドを入力すると予測変換をサジェストしてくれる。

```
Ctrl + n  
```

例えば、session_startと書きたいとき、seと二文字くらい入力しCtrl+nを入力すると、seから始まるいくつかの命令をサジェストしてくれるという具合。

#16. 矩形選択後に編集する
例えば、old_boyという変数をyoung_boyに変更したい時

```
Ctrl +v で矩形選択後
I で挿入モード
矩形選択した箇所全て変更可能
```

#17. テキストオブジェクトを扱う

テキストオブジェクトを扱う単位は以下の通り。

```
c/d/y カット、デリート、コピー
```
```
i/a  inner（中身） か　all（全体）か 
```
```
t/“/)/]  tagや””を指定できる
```
例えば、\<title>ログイン\</title>というタグがあるとすると、以下の場合だと

```
cit (カットせよ、中身を、Tagの）
```
となり、挿入モードに移行し、ログインという文字を削除してから入力という手間がなく、一気に編集可能。



#18 便利な設定を使う
行番号を記載してくれる

```
:set number 
:set nonumber　（表示をやめる）
```
:set number 実行前↓
![実行前](https://qiita-image-store.s3.amazonaws.com/0/302452/686b0fd3-dff4-66ab-d664-2c98b68edd69.png)
:set number 実行後↓
![実行後](https://qiita-image-store.s3.amazonaws.com/0/302452/06a199cd-3560-cf9f-9877-497c36bc17cc.png)

 コードを色分けしてくれる

```
:syntax on 
:syntax off
```
タブの文字数を規定する

```
:set tabstop=4 
```

大文字小文字の区別をなくす（検索の時に便利）

```
:set ignorecase 
```

#おわりに
ドットインストール『vim入門』とvimtutorを一通りやっただけなので、このリファレンスを見返しながら実際にガンガンvimを使って行きたいと思います。目指せ、vimmer!