17

標準の C++ ヘッダー命名規則に従う一連の C++ ヘッダー ファイルを含むプロジェクトがあります。つまり、Foo というクラスは、またはFooではなく、というファイルで宣言されます。これらのファイルに対してのみ構文の強調表示を行うように vim を構成する良い方法はありますか? 少し満足度の低いフォールバックは、拡張子を持たないすべてのファイルに対して C++ スタイルの強調表示を有効にすることです。拡張子のみに依存するのではなく、ファイルの種類を検出するためのより洗練された方法があるかどうかはわかりません。Foo.hFoo.hh

4

3 に答える 3

18

modelineこれには機能を使用できます。モードラインを使用すると、ファイルの最初/最後の数行のコメント内から特定のオプションを設定できます。

これにより、コーディング ガイドラインや折り畳みのパラメータを設定するのに最適な場所になります。セキュリティ上の理由から、一部のオプションは設定できません。詳細については、ドキュメントを参照してください。

これをファイルの先頭または末尾に配置します。

/* vim: set ft=cpp: */

編集:コメントによって促される詳細:) :

モードラインが有効になっている場合にのみ機能します。通常の状況では、デフォルトである必要があります。有効になっていることを確認するか、検出された領域のサイズを変更するには、次のmodelineオプションを設定します.vimrc

set modelines=5

上記のような行が各ファイルの最初の 5 行または最後の 5 行で検出されるようにします。

モードライン内ではsetlocal、ファイルが読み込まれるバッファのオプションを設定することを意味します。このftオプションは としても知られfiletype、構文強調表示言語を決定します。値cppは、C++ ファイルで使用される値です。

編集 2: 魔法のパターンを特定できる場合は、モードラインがなく、もう少し作業が必要です。

au BufRead * if search('MagicPattern', 'nw') | setlocal ft=cpp | endif

意味: ファイルを開くたび"MagicPattern"に、そこにあるかどうかを確認してください。そうである場合は、C++ として扱います。pattern 引数は正規表現の vim 方言です。詳細を確認help patternしてください。

于 2012-05-14T13:49:55.430 に答える
14

デフォルトのvim設定で、これをファイルの先頭に追加して、vimにファイルタイプを選択させます。

/* vim: set filetype=cpp: */

別の言語を使用している場合は、それに応じて調整してください。

# vim: set filetype=python:

モードラインとモードラインの明確化

答えでは、https://stackoverflow.com/a/10584645

set modeline=5

次のようにする必要があります。

set modelines=5

ドキュメントを参照してください: https://stackoverflow.com/a/10584645。具体的には、modelineはブール値の有効化フラグであり、デフォルトでオンになっていますhttp://vimdoc.sourceforge.net/htmldoc/options.html#%27modeline%27であり、modelinesは整数の引数 (いずれの場合もデフォルトは 5) を受け取ります。モードラインが有効になっている場合に調べる行数http://vimdoc.sourceforge.net/htmldoc/options.html#%27modelines%27

これは OP には関係ありませんが、検索から到着した人がファイルの先頭にあるファイルタイプを vim に伝える方法を思い出させるためにここに追加します。

于 2012-08-01T13:32:25.120 に答える