Vim設定 · 1 min read · Nov 14, 2025
VimでModelineを使用してファイル固有の設定変更を行う方法
プラグインは間違いなくVimの最大の強みの一つですが、他にもいくつかの機能があり、今日のLinuxユーザーにとって最も強力で機能豊富なテキストエディタ/IDEの一つとなっています。これらの機能の一つが、ファイル固有の設定変更を行う能力です。この機能は、エディタのModeline機能を使用してアクセスできます。
この記事では、VimのModeline機能を使って、わかりやすい例を用いて説明します。
しかし、始める前に、このチュートリアルで言及されているすべての例、コマンド、および指示は、Ubuntu 16.04 - Ubuntu 22.04でテストされています。
VIM Modeline
使用法
すでに述べたように、VimのModeline機能を使用すると、ファイル固有の変更を行うことができます。たとえば、プロジェクトの特定のファイルで使用されているすべてのタブをスペースに置き換え、他のすべてのファイルにこの変更が影響しないようにしたいとします。これは、Modelineがあなたのやりたいことを助ける理想的な使用例です。
したがって、あなたができることは、問題のファイルの最初または最後に次の行を入れることです:
# vim: set expandtab:前述の演習を試みると、Linuxマシンで期待通りに動作しない可能性が高いです。その場合は心配しないでください。Modeline機能は、場合によっては最初に有効にする必要があります(セキュリティ上の理由から、Debian、Ubuntu、Gentoo、OSXなどのシステムではデフォルトで無効になっています)。
機能を有効にするには、.vimrcファイル(ホームディレクトリにあります)を開き、次の行を追加します:
set modelineこれで、タブを入力してファイルを保存すると(expandtab modelineコマンドが入力された場所)、タブは自動的に空白に変換されます。
別の使用例を考えてみましょう。Vimのデフォルトのタブ幅が4に設定されているが、特定のファイルでは8に増やしたいとします。このためには、ファイルの最初または最後に次の行を追加する必要があります:
// vim: noai:ts=8:
タブを入力してみると、カバーするスペースの数が8になることがわかります。
これらのmodelineコマンドは、ファイルの上部または下部の近くに入力する必要があると言ったことに気づいたかもしれません。なぜそうなっているのか疑問に思っている場合、その理由はこの機能がそのように設計されているからです。以下の行(公式のVimドキュメントから引用)でこれがより明確になるはずです:
“ modelineはファイルのどこにでも置くことはできません: 最初または最後の数行に置く必要があります。vimがmodelineをチェックする正確な位置は、modelines変数によって制御されます; :help modelinesを参照してください . デフォルトでは、5行に設定されています。”
そして、上記の行で言及されている:help modelinesコマンドが言っていることは:
'modeline'がオンの場合、'modelines'は設定コマンドをチェックする行数を示します。'modeline'がオフまたは'modelines'がゼロの場合、行はチェックされません。デフォルトの5行(上部または下部から)を超えてmodelineコマンドを置いてみると、タブスペースがVimのデフォルトに戻ることに気づくでしょう - 私の場合、それは4スペースです。
ただし、.vimrcファイルで次のコマンドを使用して、この動作を変更することができます。
set modelines=[new-value]たとえば、私は値を5から10に増やしました。
set modelines=10これは、今後はファイルの最初または最後の10行の間にmodelineコマンドを置くことができることを意味します。
次に、ファイルを編集している間、いつでも次のコマンドを入力して(Vimエディタがコマンドモードにあるとき)、現在のmodeline関連の設定とそれが最後に設定された場所を確認できます。
:verbose set modeline? modelines?たとえば、私の場合、上記のコマンドは次の出力を生成しました:
modeline
最後に~/.vimrcから設定されました
modelines=10
最後に~/.vimrcから設定されましたVimのModeline機能について知っておくべき重要なポイントは次のとおりです:
- この機能は、nocompatible(非Vi互換)モードで実行されているVimではデフォルトで有効ですが、Vimの著名なディストリビューションでは、セキュリティのためにsystem vimrcでこのオプションが無効になっています。
- rootとして編集しているときは、デフォルトで無効になっています(’sudo’を使用してファイルを開いた場合は問題ありません - 機能は動作します)。
- ‘
set'を使用すると、modelineはバックスラッシュに続かない最初のコロンで終了します。そして、’set'なしでは、オプションの後にテキストを続けることはできません。たとえば、/ vim: noai:ts=4:sw=4 /は無効なmodelineです。
セキュリティの懸念
残念ながら、VimのModeline機能はセキュリティを脅かすために使用される可能性があります。実際、シェルコマンドインジェクション、任意のコマンド実行、不正アクセスなど、過去に報告された複数のセキュリティ関連のModelineの問題があります。確かに、これらのほとんどは古く、今では修正されているでしょうが、Modeline機能がハッカーによって悪用される可能性があることを示しています。
結論
ModelineはVimエディタの高度な機能かもしれませんが、理解するのはそれほど難しくありません。学習曲線が少しあることは間違いありませんが、この機能がどれほど便利であるかを考えると、それほど大きな要求ではありません。もちろん、セキュリティの懸念があるため、機能を有効にして使用する前に選択肢を検討する必要があります。
Modeline機能を使用したことがありますか?あなたの経験はどうでしたか?コメント欄で私たち(およびHowtoForgeコミュニティ全体)と共有してください。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。