こんにちは、インフラエンジニアの射場です!
この記事は TECHSCORE Advent Calendar 2016 の15日目の記事です。
ソースファイルを見たときに↓のような行を見たことある方、どういう意味かわかりますか?
| 1 | # vim: set ft=sh ff=unix fileencoding=utf-8 expandtab ts=4 sw=4 : | 
謎の呪文にしか見えないよ!!というアナタ!この記事はアナタのための記事です。
はいはい、わかるよーというアナタ!普段からvimをこよなく愛するお仲間ですね。この記事をよちよちvimmerに教えてあげてください。
呪文の正体は「モードライン」
コードやらなんやらを書いた後、他の人がvimで見たときにそのときに使用していたオプションと同じ設定を必ず適用してひらいて欲しいときってありますよね。
そんなときに、ファイルにvim特有の記述をしておくことでそのファイルがvimで開かれた時に特定の設定を有効にするモードラインという機能が役に立ちます。
モードラインの書き方を覚えておくと、 チームのメンバーにファイルを読ませたい時、プロジェクト特有のルールがある時、他の環境にファイルを移す時などに役に立ちます。
モードラインのルール
モードラインの機能を有効にする
モードラインを使用するには、vimの modeline オプションがオンになっている必要があります。
大抵の場合はオンになっていますが、オフになっている場合は次のコードをvimの設定ファイル(.vimrc等)に追加してください。
| 1 | :set modeline | 
モードラインの検索行数
vimは、ファイルの上下の端から modelines オプションで設定された行数だけ、 モードラインを探しにいきます。
デフォルトは5行です。
modelines オプションを変更するには、vimの設定ファイルで下記のように設定してください。
| 1 | :set modelines=5 | 
モードラインで設定できるvimオプション
モードラインで設定できるオプションは、 vimの :set コマンドで設定できるオプションのみです。
一部のオプションはモードラインで使用できません。
モードラインの書き方
モードラインの形式
モードラインには2つの形式があります。
- 1つ目の形式
| 1 | [text]{white}{vi:|vim:|ex:}[white]{options} | 
- 2つ目の形式
- viのバージョンによってはこの形式と互換性があります。
 
| 1 | [text]{white}{vi:|vim:|vim:|ex:}[white]se[t] {options}:[text] | 
- 表記の意味
| 表記 | 意味 | 
|---|---|
| [text] | 任意のテキスト、なくても良い | 
| {white} | 1個以上の余白 ( | 
| {vi:/vim:/ex:} | “vi:” か “vim:” か “ex:” という文字列 | 
| [white] | 空白、なくても良い | 
| {options} | オプション設定が、空白か ‘:’ で区切られて並んだもので、’:’ の間の部分はコマンド “:set” の引数(空でもよい) | 
書き方の例
それぞれの形式に則ったモードラインを書いてみました。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ## 1つ目の形式 vi:noai:sw=3 ts=6 vim: tw=77 # vim:ft=yaml ## 2つ目の形式 /* vim: set ai tw=75: */ # vim: set ai tw=75: # vim: set fileencoding=utf-8 : ## 2つ目の形式(コメントありバージョン) # vim: set expandtab ff=unix ft=sh :# この行はvimのモードラインです。 | 
1つ目の形式は se[t] を書かかなくても良いのですが、 モードラインの後ろにvimのオプション以外の余分な文を書くことができません。
2つ目の形式はモードラインの後ろに余分な文やコメントを書くことができますが、 se[t] と、モードラインを閉じる “:” を書く必要があります。
プログラムのコードでモードラインを使用する場合はプログラムのコメントとして書くことが多くなると思います。
その意味では2つ目の形式に慣れておくとよいかもしれません。
モードラインについてもっと知りたいとき
さらにモードラインについて知りたい方は
| 1 | :he modeline | 
や
| 1 | :help modeline | 
を実行して、モードラインのヘルプを見てみましょう!!
んで、冒頭のモードラインはどういう設定になるの?というアナタへ
ぜひご自分で調べてみましょう!
| 1 | :help tw | 
や
| 1 | :help ff | 
を実行するとヘルプページが開きます。
vimのヘルプは英語ですが、日本語のヘルプもあります。
https://github.com/vim-jp/vimdoc-ja
また、日本語ヘルプをvimにインストールして使う方法もあります。
名無しのvim使いさんの日本語に翻訳されたvimエディタのヘルプをインストールして使用する。という記事が参考になります。
よいvimライフを!

 
						