title: Vim: How to apply external command only to lines matching pattern
body: <p>Two of my favorite Vim features are the ability to apply standard operators to lines matching a regex, and the ability to filter a selection or range of lines through an external command. But can these two ideas be combined?</p>
  
  <p>For example, I have a text file that I use as a lab notebook, with notes from different dates separated by a line of dashes. I can do something like delete all the dash-lines with something like <code>:% g/^-/d</code>. But let's say I wanted to resize all the actual text lines, without touching those dash lines. </p>
  
  <p>For a single paragraph, this would be something like <code>{!}fmt</code>. But how can this be applied to <em>all</em> the non-dash paragraphs? When I try what seems the logical thing, and just chain these two together with <code>:% v/^-/!fmt</code>, that doesn't work. (In fact, it seems to crash Vim...)</p>
  
  <p>Is there a way to connect these two ideas, and only pass lines (not) matching a pattern into an external command like <code>fmt</code>?</p>