1

ファイルタイプの構文を拡張し、既存のファイルタイプを強調表示したいと思います。新しいファイル構文の基本構造は次のとおりです。

" Some local (new) syntax that I want to match
syn match   upfOperator "[&|~><!)(*#%@+/=?:;}{,.\^\-\[\]]"
syn match   upfDefines  "\$\S\+"
syn match   upfDefines  "\${\S\+}"
syn match   upfParens   "[)(}{\[\]]"

" load syntax that I want to extend.  This contains it's own highlight commands
runtime syntax/dtcl.vim

" New highlight statements
hi link upfOperator          Statement
hi link upfDefines           Constant
hi link upfParens            Constant

問題は、dtcl.vimファイルに含まれているすべての構文が強調表示されていないことです。dctlファイルを開くことができ、強調表示が機能します。ただし、他のファイルタイプ(* .upf)を開くと、upf.vimはロードされますが、dtcl.vimはロードされません。

dctl.vimには、ファイルがロードされない原因となる「構文が定義されている場合」のタイプのコマンドはありません。

4

1 に答える 1

2

dctl.vimが適切なVim構文スクリプトである場合:syntax clear、すべての構文が想定されているように、既存の構文項目()をクリアします。したがって、独自のupf...定義を。の下に移動する必要があります:runtime

既存の構文を正しくロードするには、次のコマンドを使用する必要があります。

runtime! syntax/dctl.vim syntax/dctl/*.vim

あなた:runtime syntax/dctl.vimは最初の出現のみを考慮し、構文拡張は考慮しません。

それ以外は、まだカバーされていない新しい構文要素を追加するだけで、アプローチに問題はありません(カバーされている場合は、おそらく使用する必要がありますcontainedin=...)。この:syn listコマンドを使用して、実際に定義されているものを確認できます。

于 2013-02-26T09:00:17.757 に答える