Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

vimのmodelineオプションについて日本語で書いてみる

$
0
0

初めに

やっぱり公式の:help modelineが一番わかりやすいです。
が英語苦手な人のために日本語に翻訳されたのがあるのでリンク貼っときます・
http://vim-jp.org/vimdoc-ja/options.html#modeline

概要

modelineはvimで自動設定をするためのオプションの一つです。
同じように設定を自動化する機能にautocommandがありますが、autocommandが指定イベントが起きた時にコマンドを実行するのにし、modelinemodelineの書かれたファイルが読み込まれた時にコマンドが実行されます
autocommandでは全てのファイルに対して指定イベントが起きればコマンドが実行されるのに対し、modelineファイル単位で実行するコマンドを定義できます。(二度いってる気がする
以下個人的な解釈です。実際とは異なる可能性があります(特にautocommandはよくわからない)

メリットデメリット
autocommandファイルごとに設定しなくていい他の人にファイルを渡した時に設定が反映されない
modelineファイル単体でも大体コマンドを実行してくれる共通してるものでも一個一個ファイルに書かなきゃいけない

modelineのデメリット -セキュリティ的なお話

一応、セキュリティの観点から、set以外のコマンドを指定することはできなくなっています。
又、setのオプションにしても、いくつかのものはsandboxが動いている時のみ利用可能となります。
しかし、それでもまだ注意が必要です。
例えば、textwidth5などに設定されてしまうと、全ての行が変更される可能性があります。
なので、信頼していない文章を読む際には、modelineをoffにしておくことをお勧めします。(ってhelpに書いてあった)

もしも、setコマンド以外のことがしたければ、autocommandを使用するといいみたいです。

事前準備 -設定

modelineを使得るようにするには、いくつかオプションをセットする必要があります。
.vimrcに追加してください。(デフォルトでは以下の設定になっていると書かれていましたが、自分の環境だとそうはなっていなかったため、念のためというやつです。)

  • modelineオプションをonに --> :set modeline
  • modelines(sがついた複数形です)を0以外の整数に --> :set modelines=5など

modelineがoff、もしくはmodelinesが0になっているとmodeline機能を使えないので注意してください。

modelineを記述する場所

ファイルの先頭、若しくは末尾です。
modelinesで設定された行数分、先頭と末尾から探索されます。

書式

2通りの書き方があります。

  • [text]{white}{vi:|vim:|ex:}[white]{options}
  • [text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]

後者はViに互換性があるようです。又、後者はset又はseがが必須です。

[text]前に文字があっても大丈夫だよってことです。何もなくても勿論いいです。
{White}一つ以上の<space>または<tab>
{vi:|vim:|Vim:|ex:}文字列。ex::exampleの略な様で、その行は無視される様です。
[white]こちらのWhiteはオプションなのでなくても大丈夫
{options}setコマンドのオプションを書きます。上の方の書き方では区切り文字に:も使えますが、両方共通として<space>が使えます

{options}内にて:を使いたい場合、\でエスケープすることができます。 => \:

modelineヘルプから引用
"一つ目の例vi:noai:sw=3ts=6~vim: tw=77~"二つ目の例/* vim: set ai tw=75: */~/* Vim: set ai tw=75: */~

まあこんな感じです、一応僕の使ってる例:
Cj-bc/slackerの、docs/about_sourcefiles.txt
一行しかないのですが、

Cj-bc/slacker/docs/about_sourcefiles.txtの下の方
Vim:setfiletype=help:

ファイルタイプをhelpに指定するmodelineを書いてあります。(これについて詳しくは -> Vimで折角tagsファイルを作成したドキュメントに色をつけたい!)

おまけ: Vimのバージョンを指定してmodelineを実行する

おまけというほどでもない様な気はします。普通にhelpに乗ってます。
ある特定のバージョンのVimの時だけmodelineを使うには、
先ほどのVim:vim::の前にバージョンを記載します。
以下vim helpから拝借してきました。

vim{vers}:      version {vers} or latervim<{vers}:     version before {vers}vim={vers}:     version {vers}vim>{vers}:     version after {vers}

はい、まあ書いてある通りですね。一応日本語化してみると

vim{vers}:{vers}もしくはそれよりも新しいバージョン
vim<{vers}:{vers}よりも古いバージョン
vim={vers}:{vers}のバージョンのみ
vim>{vers}:{vers}よりも新しいバージョン

特に難しいこともないですね。ただし、ここで気をつけるべきは{vers}の値です。
{vers}は、メジャーバージョンを100倍しマイナーバージョンを足した数です。
つまり、

version 7 -> 700
version  7.2 -> 702

となります。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>