Vimで折角tagsファイルを作成したドキュメントに色をつけたい！！

# 始めに

* tagsファイルって何じゃそりゃって方は[この記事](https://qiita.com/Cj-bc/items/65c6eac5307dacec5d04)を見てみてください、もしかしたらわかるかもしれません(保証はしない)
* この記事はまとめ編ではありません。**結果どうしろっていうの、って方は一番下の`結果`までジャンプしてください**
* この記事では、ハイライトやカラースキームを**作成するわけではありません**。ご了承下さい。~~お寿司もください~~


# 動機

[前回の記事](https://qiita.com/Cj-bc/items/65c6eac5307dacec5d04)のようにしてtagジャンプできるようになったはいいものの、現状としては全部同じ色で表示されており、どれがtagジャンプできんのかわかりづらい。
 なので、`:help`で表示すると使われているようなカラーリングが使いたいなって思ったのがきっかけ。


# まず始めに

* ハイライトの自動化は`filetype`に応じて行われる。
* `filetype`を調べるには`:set filetype?`を実行すれば良い
* 逆に`filetype`を設定するには`:set filetype=<filetype名>`を実行すれば良い

以上のことを踏まえて、以下のことをしてみた

1. `:help`で表示されるファイルの`filetype`を調べる
2. 自分のドキュメントの`filetype`をそれに合わせてみる
3. 思った通りのハイライトが適応される！(はず)


# 1. `:help`で表示されるファイルの`filetype`を調べる

これは簡単な話で、`:set filetype?`を実行すれば良い。
結果:

```vim
:set filetype?
> filetype=help
```

 --> 求めているハイライトの`filetype`は`help`だということがわかった

# 2. 自分のドキュメントの`filetype`を合わせてみる

これも単純作業、ドキュメントを開いて`:set filetype=help`

 --> おお、きちんと表示された！!

![filetypeを設定する前とした後の画像。見れなくてゴメンネ-_-](https://qiita-image-store.s3.amazonaws.com/0/222594/e0c673d3-9fb3-ac7b-157f-e39f90a17a2d.png ":set filetype=helpの結果")

↑上段: 設定後
↓下段: 設定前


え、じゃあこれでよくね？？
ところが

# 次なる課題: どうやってfiletypeを固定するのか

毎回毎回`:set filetype ~`とかやってるんじゃ効率悪いし何より配布とかもできない。
それは困る。
何とかして固定しなければならないわけで。

まず

* 普段はfileの拡張子からfiletypeを判断をしている

ということから、とりあえず拡張子を`.help`とかして見たが何も起こらず。
ちなみに`:help`で表示されるヘルプページの拡張子は`.txt`であるがこれまた何も起こらず。
レッツgoogle!!

## 解決法: filetypeの固定 => modelineを使う！

### が問題発生

結局、google先生に聞いてもよくわからなかったので素直に`:help filetype`した。ええ、しましたとも。
そしたら\*filetype\*の欄の後ろの方に以下の記述があった。

```
If the file type is not detected automatically, or it finds the wrong type,
you can either set the 'filetype' option manually, or add a modeline to your
file.  Example, for an IDL file use the command: >
        :set filetype=idl

or add this |modeline| to the file:
        
/* vim: set filetype=idl : */ ~
```

どうやら**modefile**とかいう機能を使うために、ファイルの中に`/* vim: set filetype=<設定したいファイルタイプ> : */ ~`と書けばいいようで。
今回は、設定したい`filetype=help`なので`idl`を`help`に書き換えてみる。
modelineが何なのかとか細けぇこた置いといて(=>help的なのは[vimのmodelineオプションについて日本語で書いてみる](https://qiita.com/Cj-bc/items/fe194f556413f6e1a0d5)をみてみてください)、説明の通りにやってみる。
どうやらファイルの最初or最後に書けばいいようで、とりあえずファイルの初めに置いてみる。
で、ファイルを一旦閉じて開き直す。

![/* vim: set filetype=help : */ ~を書いて見たけど色つかなかったよっ](https://qiita-image-store.s3.amazonaws.com/0/222594/bd78212a-8c14-d042-c695-b2689e082f77.png)


あれれ、色がついてない...
`filetype`を確認するも、

```vim:
:set filetype?
> filetype=text
```

とのことで変わっていない...

### `modeline`を簡単に調べる

もうどうしようもないので`:help modeline`しまして。

```
The number of lines that are checked can be set with the 'modelines' option.                                                                                                                     
If 'modeline' is off or 'modelines' is 0 no lines are checked.
```

ふむ、どうやら`modeline`がoffなのか、`modelines`が0なのかが問題なようだ。
~~ちなみに最初`modelines`についての記述に気がつかなくて1日ぐらい悩んだ~~

`:set modeline?`と`:set modelines?`してそれぞれの値を見てみた。
するとどうだろう、`modeline`の方はonになっていたものの`modelines`が0になっていた。
つまり、`modeline`の機能自体はonになっていたものの、読み込む行数が0行だったので読み込まれていなかったということだ。~~わかりづれぇ~~

と、いうことで、`:set modelines=5`をしてみた。が、変わらない...
`:set modelines=5`をした後、一度開き直さなければいけないから、設定が変わってしまっているのかもしれない、ということで、
.vimrcに`modelines=5`を書いてみた結果がこちら:


![vimrcに設定したら今度はうまくいったやつだよっ](https://qiita-image-store.s3.amazonaws.com/0/222594/8f3c595a-d69a-acba-d0e2-ebf41f126137.png)


おお！！できた！！！

ということで、色がつきました、とさ。

(ちなみにこの後、`/* vim: set filetype=help : */ ~`はファイルの末尾に移動した。`:help`で表示されるテキストも、modelineを末尾に書いてあることが多かったため。)

---

# 結果

1. `/* vim: set filetype=help : */ ~`をファイルの先頭or末尾に置く
2. `:set modeline`、`:set modelines=(0以外の数)`を`vimre`に書く