3

時々、現在のバッファにカスタムの追加の構文ハイライトを適用したいと思います。

ビルドインvim構文/ハイライトシステムを使用してこれを行うにはどうすればよいですか(ハイライトプラグインは使用したくない)

例として、現在のバッファー内のすべてのassertステートメントを強調表示したいと思います。

4

2 に答える 2

5

強調表示が特定のファイルタイプ(Javaなど)のみを対象としていて、常にそれが必要な場合は、:syn match ...定義をに配置して元の構文を拡張します~/.vim/after/syntax/java.vim

dwalterが示しているように、自発的な強調表示には:match(または:2match)を使用します。

オン/オフロジックを切り替えるなど、より複雑なマッピングを作成する場合は、/を使用しmatchadd()ますmatchdelete()

最後に、テキストマーカーでドキュメントをマークアップするなど、任意の単語や文字列を強調表示する必要がある場合は、Mark(私が保守を引き継いだ)のようなプラグインの快適さをお勧めします。

于 2012-11-07T15:36:43.240 に答える
4

match必要に応じて使用できhighlightます。

例:

    :hi MyAsserts term=bold ctermbg=Cyan
    :match MyAsserts /assert(.*)/

assert()シアンの背景でステートメント を強調します。:match引数なしでリセットされます。

highlightいずれかの詳細については、またはmatchを介してドキュメントを参照してください :help hi:help match

ハイライトを再利用するには、これらのコマンドをファイルに保存して、:source file.vimいつでもロードするために使用できます。別の方法は、内にコマンドを定義すること.vimrcです。

     hi MyAsserts ctermbg=Cyan
     command -bar -nargs=0 HiAsserts match MyAsserts /assert(.*)/
     "highlight any given regex
     command -bar -nargs=1 HiIt match MyAsserts /<args>/

で呼び出して:HiAssertsassert()ステートメントを強調表示したり、バッファ内の:HiIt fooすべてを強調表示したりします。foo

于 2012-11-07T15:23:40.510 に答える