4

これらのパターンのいずれにも従わない左中かっこの一致パターンを作成したいと思います。

  1. {\n\n
  2. {\s*\/\/.*\n\(\s*\/\/.*\)\?\n

より一般的な問題は、作業中のコーディング仕様の違反を強調表示することです。これにより、次の空白行が強制されます{

明確化、次のようなコードをキャッチするためにこれを探しています:

if (foo) {
    this_is_bad____no_blank_line_above();
} else {this_is_worse();}

while (1) {  //This comment is allowed
             //This one too
    theres_nothing_wrong_with_this();
}

if (foo) {
    ....//<-- Ideally we could mark this as bad, due to the spaces here
    otherwise_perfectly_good();
}

私が本当に必要なのは:{\(\n\n\|\s*\/\/.*\n\(\s*\/\/.*\)\?\n\)\!

作成された記号は、「これら 2 つのオプションのいずれとも一致しない」\!を意味します。個々の文字に対してそれを行う方法はありますが、長い文字列に対してはそうではありません。

4

2 に答える 2

6

それを見つけた:

探していた\@!

で文書化:h /\@!

{\(\n\n\|\s*\/\/.*\n\(\s*\/\/.*\)\?\n\)\@!
于 2010-08-20T19:02:11.557 に答える
1

以下を .vimrc ファイルの末尾に追加します。

:highlight InvalidStyle ctermbg=red guibg=red ctermfg=black guifg=black
:match InvalidStyle /{\s*[^\t \/]\+.*$/

最初の行は、新しいハイライト スタイル (赤地に黒) を定義し、次の行は、コメントではないコンテンツがその後にある中括弧を見つけて、それらにハイライトを適用しようとします。

于 2010-08-20T16:58:19.050 に答える