始めに
- tagsファイルって何じゃそりゃって方はこの記事を見てみてください、もしかしたらわかるかもしれません(保証はしない)
- この記事はまとめ編ではありません。結果どうしろっていうの、って方は一番下の
結果
までジャンプしてください - この記事では、ハイライトやカラースキームを作成するわけではありません。ご了承下さい。
お寿司もください
動機
前回の記事のようにしてtagジャンプできるようになったはいいものの、現状としては全部同じ色で表示されており、どれがtagジャンプできんのかわかりづらい。
なので、:help
で表示すると使われているようなカラーリングが使いたいなって思ったのがきっかけ。
まず始めに
- ハイライトの自動化は
filetype
に応じて行われる。 filetype
を調べるには:set filetype?
を実行すれば良い- 逆に
filetype
を設定するには:set filetype=<filetype名>
を実行すれば良い
以上のことを踏まえて、以下のことをしてみた
:help
で表示されるファイルのfiletype
を調べる- 自分のドキュメントの
filetype
をそれに合わせてみる - 思った通りのハイライトが適応される!(はず)
1. :help
で表示されるファイルのfiletype
を調べる
これは簡単な話で、:set filetype?
を実行すれば良い。
結果:
:setfiletype?>filetype=help
--> 求めているハイライトのfiletype
はhelp
だということがわかった
2. 自分のドキュメントのfiletype
を合わせてみる
これも単純作業、ドキュメントを開いて: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が何なのかとか細けぇこた置いといて(=>[あとでこれについて説明貼ります])、説明の通りにやってみる。
どうやらファイルの最初or最後に書けばいいようで、とりあえずファイルの初めに置いてみる。
で、ファイルを一旦閉じて開き直す。
あれれ、色がついてない...filetype
を確認するも、
:setfiletype?>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
を書いてみた結果がこちら:
おお!!できた!!!
ということで、色がつきました、とさ。
(ちなみにこの後、/* vim: set filetype=help : */ ~
はファイルの末尾に移動した。:help
で表示されるテキストも、modelineを末尾に書いてあることが多かったため。)
結果
/* vim: set filetype=help : */ ~
をファイルの先頭or末尾に置く:set modeline
、:set modelines=(0以外の数)
をvimre
に書く