title: Vim regex: add line above all lines not starting with "#"
body: <p>I have a text file with a structure like this:</p>
  
  <pre><code>The quick  
  #a comment
  brown 
  fox jumps  
  #another comment
  over  
  the 
  lazy
  #yet another comment
  dog
  </code></pre>
  
  <p>So each line either contains "normal" text or a comment starting with "#". 
  I want this text to be replaced using regex, so that each "text"-line gets a comment line above it. The result should be something like:</p>
  
  <pre><code>#auto comment
  The quick  
  #a comment
  brown 
  #auto comment
  fox jumps  
  #another comment
  over  
  #auto comment
  the 
  #auto comment
  lazy
  #yet another comment
  dog
  </code></pre>
  
  <p>However, I'm not able to create a working regex although I spent really much time. There's always at least one special case where my regex fails.
  The best one I was able to create is:</p>
  
  <pre><code>:%s/^\([^#].*\)\n\([^#].*\)$/\1\r#auto comment\r\2/g
  </code></pre>
  
  <p>This one works perfectly fine (except for the first line), if I run it twice. But running it only once skips some lines, e.g. I get this result:</p>
  
  <pre><code>The quick
  #a comment
  brown
  #auto comment
  fox jumps
  #another comment
  over
  #auto comment
  the
  lazy
  #yet another comment
  dog
  </code></pre>
  
  <p>Notice that there's no line inserted between "<strong>the</strong>" and "<strong>lazy</strong>". The reason for this is, that the term "the" is a part of the regex group and part of the replaced text and so it won't be parsed by regex again.</p>
  
  <p>Is there any possibility (well I bet there is and I'm just not able to find it...) to solve this issue?
  I realize that checking the first line is another problem, too. It would be great if this could be recognized, too, however this is currently not my main focus of attention.</p>