modelines

モード行 (Vim)

公式情報

Vim

Neovim

構文

[13] vi:, vim:, ex: のいずれかをに含めます。 >>10

[23] ただし vim: の間に、 空文字列 ( の意味。), <, =, > のいずれかと、 数字列を指定できます。 数字列は、 Vim の major version × 100 + minor version を表します。 Vim版番号が指定の条件を満たすときのみ適用されます。 >>10

[14] >>13 の前には1つ以上空白 (U+0009, U+0020) を置きます。 ただし、行頭vi:, vim: が続く場合は、空白を0個とできます。 >>10

[21] 空白の省略は、 Vim 3.0 との互換性のため >>10 とされます。

[15] >>13 の後には0個以上空白を置きます。 >>10

[16] 第1形では、 >>15 の後には空白または : で区切られた0個以上の option setting の並びを置きます。 >>10

[19] 第1形では、 >>13 の前に0個以上文字を置けます。 >>10

[17] 第2形では、 >>15 の後には set または se を置きます。 >>10

[18] >>17 の後には空白で区切られた option の並びを置きます。 その後に : を置きます。 >>10

[20] 第2形では、 >>13 の前や >>18 の後に0個以上文字を置けます。 >>10

[22] 第2形は特定の版の Vi互換性がある >>10 とされます。

[24] 並びの中において :\: と書きます。 \:\\: と書きます。 >>10

[25] それ以外の \ は特別な意味を持っていないようです。

[26] 並びの中の値は、 :set に設定する値とみなされます。 >>10 option の名前だけが指定されることもあれば、 = に続けて値が指定されることもあります。 他にも option のデータ型によっていくつかの指定方法があります。


[27] モード行として解釈されるかどうかは、 option modeline, modelines に依存します。 >>10

[32] ファイルの先頭か末尾の指定行数がモード行として解釈されます。 >>10 最後の改行の後の末尾のをどう数えるのかはドキュメント上明確ではありません。

[39] モード行の区切りとなる改行文字の違いは option によるものと思われます。 モード行によるその変更が即座に反映されるのかはドキュメント上明確ではありません。

[40] 文字コードの認識は option によるものと思われますが、 モード行によるその変更がモード行の処理に即座に反映されるのかはドキュメント上明確ではありません。 ASCII互換ではない utf-16le などとの相互作用もドキュメント上明確ではありません。

option

[28] Vim にはいろいろな option があります。 option はいくつかの方法で設定でき、 そのうちの1つがモード行です。ただしモード行では設定できない option もあります。

[29] modeline = ml option は、 boolean であり、既定値は Vim 通常利用者onrootoffVioff です (compatible = cpon のときこちらの既定値となります)。 modelineoff だと、モード行は検査されなくなります。 >>10

[30] modelines = mls option は、 number であり、既定値は 5 です。 modelineon のとき、 modelines で指定された数分、 モード行が検査されます。 >>10

[31] binary = bin option (= 起動時の引数 -b) の副作用の1つとして、 modelineoff に設定されます。 >>10

[33] モード行が複数あるときの処理順はドキュメント上明確ではありません。 modeline, modelines 等が即座に反映されるのかはドキュメント上明確ではありません。

[34] fileencoding = fenc option は文字コードを指定します。 古い版では fe がありましたが、既に廃止されていて実装されていないようです。 >>10

[35] fileencodings = fencs option は文字コードの候補を指定します。

[36] fileformat = ff option は改行コードを指定します。 fileformats = ffs option は改行コードの候補を指定します。 >>10

[37] filetype = ft option はファイル形式を指定します。 . 区切りでいくつか指定できます。 >>10

[38] syntax = syn option は構文ハイライトのためのファイル形式を指定します。 . 区切りでいくつか指定できます。 >>10

関連

[41] 他のエディターの同様の機能もモード行と呼ばれることがあります。 -*-, Kate Modelines

コメントの中身が意味を持ってしまう

メモ

[9] Modeline magic | Vim Tips Wiki | Fandom, , https://vim.fandom.com/wiki/Modeline_magic

[8] ファイル内にex:: が入っているとError detected while processing modelinesが表示される · Issue #1281 · vim-jp/issues, https://github.com/vim-jp/issues/issues/1281

[6] Xユーザーのドッグさん: 「最近 Vim のモードライン判定が地味に誤爆する… 例えば { vim: true } というオブジェクトをつくるとそこで vim: をモードラインだと思ってしまう」 / X, , https://x.com/Linda_pp/status/1145585417896353792

[1] PEP 263 -- Defining Python Source Code Encodings | Python.org () https://www.python.org/dev/peps/pep-0263/

[2] Rubyvim: を解釈するようです。

[5] Modeline magic | Vim Tips Wiki | Fandom, , https://vim.fandom.com/wiki/Modeline_magic