title: Vim: insert the same characters across multiple lines
body: <p>Sometimes I want to edit a certain visual block of text across multiple lines.</p>
  
  <p>For example, I would take a text that looks like this:</p>
  
  <pre><code>name
  comment
  phone
  email
  </code></pre>
  
  <p>And make it look like this</p>
  
  <pre><code>vendor_name
  vendor_comment
  vendor_phone
  vendor_email
  </code></pre>
  
  <p>Currently the way I would do it now is...</p>
  
  <ol>
  <li>Select all 4 row lines of a block by pressing <kbd>V</kbd> and then <kbd>j</kbd> four times.</li>
  <li>Indent with <kbd>></kbd>.</li>
  <li>Go back one letter with <kbd>h</kbd>.</li>
  <li>Go to block visual mode with <kbd>Ctrl</kbd><kbd>v</kbd>.</li>
  <li>Select down four rows by pressing <kbd>j</kbd> four times. At this point you have selected a 4x1 visual blocks of whitespace (four rows and one column).</li>
  <li>Press <kbd>C</kbd>. Notice this pretty much indented to the left by one column.</li>
  <li>Type out a <code>" vendor_"</code> without the quote. Notice the extra space we had to put back.</li>
  <li>Press <kbd>Esc</kbd>. This is one of the very few times I use <kbd>Esc</kbd> to get out of insert mode. <kbd>Ctrl</kbd><kbd>c</kbd> would only edit the first line.</li>
  <li>Repeat step 1.</li>
  <li>Indent the other way with <kbd>&lt;</kbd>.</li>
  </ol>
  
  <p>I don't need to indent if there is at least one column of whitespace before the words. I wouldn't need the whitespace if I didn't have to clear the visual block with <kbd>c</kbd>.</p>
  
  <p>But if I have to clear, then is there a way to do what I performed above without creating the needed whitespace with indentation?</p>
  
  <p>Also why does editing multiple lines at once only work by exiting out of insert mode with <kbd>Esc</kbd> over <kbd>Ctrl</kbd><kbd>c</kbd>?</p>
  
  <hr/>
  
  <p>Here is a more complicated example:</p>
  
  <pre><code>name    = models.CharField( max_length = 135 )
  comment = models.TextField( blank = True )
  phone   = models.CharField( max_length = 135, blank = True )
  email   = models.EmailField( blank = True )
  </code></pre>
  
  <p>to</p>
  
  <pre><code>name    = models.whatever.CharField( max_length = 135 )
  comment = models.whatever.TextField( blank = True )
  phone   = models.whatever.CharField( max_length = 135, blank = True )
  email   = models.whatever.EmailField( blank = True )
  </code></pre>
  
  <p>In this example I would perform the vertical visual block over the <code>.</code>, and then reinsert it back during insert mode, i.e., type <code>.whatever.</code>. Hopefully now you can see the drawback to this method. I am limited to only selecting a column of text <strong>that are all the same in a vertical position</strong>.</p>