モードラインを使って、ファイルごとにvimエディタのオプションを指定する。
ファイルタイプ別ではなくファイルごとにエディタの設定を変更したい場合、 ファイルにvimエディタ特有の記述をしておくことで、 そのファイルがvimエディタで開かれた時に特定の設定を有効にするモードラインという 機能が役に立ちます。 モードラインの書き方を覚えておくと、 他の方にファイルを読ませたい時、プロジェクト特有のルールがある時、 他の環境にファイルを移す時などに役に立ちます。 (Windows, Mac)
概要
ファイルタイプ別ではなくファイルごとにエディタの設定を変更したい場合、
ファイルにvimエディタ特有の記述をしておくことで、
そのファイルがvimエディタで開かれた時に特定の設定を有効にするモードラインという
機能が役に立ちます。
モードラインの書き方を覚えておくと、
他の方にファイルを読ませたい時、プロジェクト特有のルールがある時、
他の環境にファイルを移す時などに役に立ちます。
モードラインとはどのようなものか
次のような記述を見たことがあるでしょうか。この指定がモードラインです。
このモードラインの指定を、ファイルの上、もしくは下に記述しておくと、
ファイルを開いた時に、モードラインで指定したvimエディタオプションが有効になります。
モードラインの例 その1 /* vim: set ai tw=75: */ モードラインの例 その2 " vim:set ts=8 sts=2 sw=2 tw=0: モードラインの例 その3 .. vim:set expandtab fenc=cp932 ff=unix ft=rest :

モードラインの書き方
モードラインのフォーマット
モードラインは、次の2種類のフォーマットの書き方ができます。
モードラインの書き方 その1 [text]{white}{vi:|vim:|ex:}[white]{options} モードラインの書き方 その2 [text]{white}{vi:|vim:|ex:}[white]se[t] {options}:[text]
表記 | 説明。表記が何を表しているか。 |
---|---|
[text] | 何らかのテキスト。省略可能。 |
{white} | 空白文字。 |
{vi:|vim:|ex:} | 「vi:」「vim:」「ex:」のどれか。 |
[white] | 空白文字。省略可能。 |
{options} | モードラインで有効にしたい設定。 |
モードラインの書き方の具体例
各モードラインの書き方の具体的な例を挙げると、下記のようになります。
「書き方 その1」は「se[t]」を書かかなくても良いのですが、
その行、モードライン以降にvimエディタのオプション以外の余分な文を書くことができません。
「書き方 その2」はモードライン以降に余分な文やコメントを書くことができますが、
「se[t]」と、モードラインを閉じる「:」を書く必要があります。
モードラインの書き方 その1 vim: expandtab fenc=cp932 ff=unix ft=rest モードラインの書き方 その2 vim: set expandtab fenc=cp932 ff=unix ft=txt : モードラインの書き方 その2(余分なテキストつき) vim: set expandtab fenc=cp932 ff=unix ft=txt : # この行はvimエディタのモードラインです。
コメントとモードラインを組み合わせる
プログラムのコードで使用する場合は、次のように、
モードラインはプログラムのコメントと組み合わせて書くことが多くなるでしょう。
シェル風のコメントと組み合わせる # vim: expandtab fenc=cp932 ff=unix ft=rest C言語風のコメントと組み合わせる /* vim: set expandtab fenc=cp932 ff=unix ft=txt : */
モードラインのルール
モードラインの機能を有効にする
モードラインを使用するには、vimエディタの「modeline」オプションがオンに
なっている必要があります。
vimエディタの「modeline」オプションをオンにするには、
次のコードをvimエディタの設定ファイルに追加してください。
" モードラインを有効にする :set modeline
モードラインの検索行数
vimエディタは、ファイルの上下端から「modelines」オプションで設定された行数だけ、
モードラインを探しに行きます。(デフォルトは5行)
「modelines」オプションを変更するには、vimエディタの設定ファイルで
次の例のように設定してください。
" モードラインの検索行数を設定 :set modelines=5
モードラインで指定できるvimエディタオプション
モードラインで指定できるオプションは、
vimエディタの「:set」コマンドで設定できるオプションのみです。
一部、モードラインで使用できないオプションもあります。
モードラインとよく組み合わされるオプション
下の表は、モードラインと組み合わせて使用できそうなオプションの例です。
インデント、タブなど、見た目にかかわるvimエディタオプションの指定に使用すると良いでしょう。
オプション | オプション(省略形) | 説明 | オプション指定例 |
---|---|---|---|
tabstop | ts | タブを画面で表示する際の幅。 | ts=4 |
shiftwidth | sw | インデント時に使用されるスペースの数。 | sw=4 |
softtabstop | sts | 0でないなら、タブを入力時、その数値分だけ半角スペースを挿入する。 | sts=4 |
textwidth | tw | 0でないなら、このオプションで設定された幅で行を改行する。 | tw=70 |
expandtab | et | 有効にすると、タブを挿入する時、そのタブを半角スペースとして挿入します。 | noexpandtab |
wrap | 有効にすると、画面端で行を折り返して表示します。 | nowrap | |
fileformat | ff | ファイルの改行の種類。dos、mac、unixのどれかを指定します。 | ff=dos |
filetype | ft | ファイルタイプ。 | ft=html |
fileencoding | fenc | ファイルのエンコーディング。 | fenc=utf-8 |
Note
モードラインで「fileencoding」オプションを指定する場合は注意してください。
現在のファイルのエンコーディングと異なるエンコーディングをモードラインで指定すると、
ファイルを破壊してしまうことがあります。
Recent Comments
ありがとうございます!
http://nanasi.jp/articles/howto/editing/visualcursor-endtoend.html · 7 years ago
知りませんでした。有難うございました。
http://nanasi.jp/articles/howto/file/open-with-format.html · 9 years ago
<c-f>1ページ分、下にスクロールする<c-b>1ページ分、上にスクロールする
どっちも逆です。
http://nanasi.jp/articles/howto/user-manual/user-manual-motion.html · 10 years ago
set 使用時に : で閉じるのを忘れて右往左往してました。
http://nanasi.jp/articles/howto/file/modeline.html · 11 years ago
やっぱり日本語の方が早いっす。
http://nanasi.jp/articles/howto/help/help_ja.html · 12 years ago