6

私は参加した会議の日誌をつけています。

各会議 :

  • 空白行で区切られています (-> 各会議は段落です)
  • 式のおかげで折りたたまれています
  • ACME、GMBH、SARL などの対応するタグを持つ行が含まれています。</li>

ACME などと行ったすべての会議のレビューを作成したい場合、

  • スクラッチ バッファを作成します (:%y、その後に :tabnew、その後に貼り付け)
  • そして、ACME が把握していないすべての段落を削除したいと考えています。

これは私が問題を抱えているところです。

行ごとに検索/削除する方法を知っています:

:v/ACME/d

しかし、段落ごとにそれを行うにはどうすればよいでしょうか (タグの行だけではなく、ACME が示す段落全体を保持するため)。

NB : パターン ACME は、これらの段落で複数回表示される可能性があります。

4

2 に答える 2

7

これは機能します:

let @r="" | execute("g/acme/ normal \"Rdap") | %d | put r

「acme」を含むすべての段落に移動し、レジスタ rに追加して削除します。次に、すべてを削除し、レジスタ r を置きます。

ご覧のとおり、基本的なトリックは、内容を置き換えるのではなく、大文字レジスタを使用して追加することです。これには、以前のレジスタの内容を破棄するために、最初にレジスタをリセットすることも必要です。

これは、最初の一致後に段落全体が削除されるため、「acme」が複数回出現する段落では問題なく機能し、再度一致することはありません。

于 2013-08-29T11:13:25.123 に答える
3

私はawkでそれを行います.vimでは次のことができます:

%!awk -v RS="" -v ORS="\n\n" '/ACME/' 

を含む段落のみACMEが保持されます。

于 2013-08-29T10:20:11.640 に答える