2012-01-14 8 views
-2

特定のパターンに対して、現在のドキュメントを先頭から検索するマクロ/関数が必要です。コメントアウトされていない最初の行で停止します。このvimのスクリプトの例についてはVim、ドキュメントヘッダ内で検索する

それは、もしラインで停止し、それはそうでないパターンとはfalseを発見した場合はtrueを返します。

すべてのお役に立ちました!

+0

「コメントしていない最初の試合で止まる」という意味ですか?または、最初のコメントアウトされていない行だけを検索したいですか? –

+0

@PrinceGoulash:彼は、ファイルの先頭のコメント領域であるヘッダーを検索し、最初の非コメント行まで(そして自然に除外する)ことを意味します。 –

+2

ところで、@Filip、あなたが何かを試したことの表示がない関数を求めているので、あなたがダウンボックスを取得している理由があります。スタックオーバーフローは、コードを提供するのではなく、コードの問題を解決するためのものです。 –

答えて

1

あなたのパターンは文字「e」としましょう。

コメントアウトが、Eが含まれていない行を検索するには:これはライン(^)の開始が続いていないことを確認するために、負の先読み(\@!)を使用しています

/^\%(\s*"\)\@!.*e 

コメントの先頭(空白と二重引用符\s*")で始まり、その後に「e」(.*e)が続きます。 \%(\)は、囲まれたパターンを、他の演算子(ネガティブ先読みなど)が単位として操作できるアトムにします。

正規表現はかなり常に同じであるmatch()

:echo match(getline(line('.')), '^\%(\s*"\)\@!.*e') >= 0 ? 'true' : 'false' 

を使用し、現在の行が一致するかどうかを確認するには:g

:g/^\%(\s*"\)\@!.*e/echo "found one" 

を使用し、一致する行でコマンドを実行するには、疑問がありますマッチするラインで何をしたいですか?