title: Deleting lines of code in a text editor
body: <p><strong><em>Edit:</em></strong> This question had been tagged "Tolstoy" in appreciation of the quality and length of my writing:) Just reading the first and the last paragraph should be enough:) If you tend to select and move code with the mouse, the stuff in middle  could be interesting to you.</p>
  
  <p>This question is about how you use text editors in general. I’m looking for the best way to <em>delete</em> a plurality of lines of code (no intent to patent it:) This extends to <em>transposing</em> lines, i.e. deleting and adding them somewhere else. Most importantly, I don’t want to be creating any blank lines that I have to delete separately. Sort of like Visual Studio's SHIFT+DELETE feature, but working for multiple lines at once.</p>
  
  <p>Say you want to delete line 3 from following code (tabs and newlines visualized as well). The naïve way would be to select the text between angle brackets:</p>
  
  <pre>
  if (true) {\n
  \t int i = 1;\n
  \t &lt;i *= 2;&gt;\n
  \t i += 3;\n
  }\n
  </pre>
  
  <p>Then hit backspace. This creates a blank line. Hit backspace twice more to delete \t and \n. </p>
  
  <p>You end up with:</p>
  
  <pre>
  if (true) {\n
  \t int i = 1;\n
  \t i += 3;\n
  }\n
  </pre>
  
  <p>When you try to select a whole line, Visual Studio doesn't let you select the trailing newline character. For example, placing the cursor on a line and hitting SHIFT+END will not select the newline at the end. Neither will you select the newline if you use your mouse, i.e. clicking in the middle of a line and dragging the cursor all the way to the right. You only select the trailing newline characters if you make a selection that spans at least two lines. Most editors I use do it this way; Microsoft WordPad and Word are counter-examples (and I frequently get newlines wrong when deleting text there; at least Word has a way to display end-of-line and end-of-paragraph characters explicitly).</p>
  
  <p>When using Visual Studio and other editors in general, here’s the solution that currently works best for me:</p>
  
  <p>Using the mouse, I select the characters that I put between angle brackets:</p>
  
  <pre>
  if (true) {\n
  \t int i = 1;&lt;\n
  \t i *= 2;&gt;\n
  \t i += 3;\n
  }\n
  </pre>
  
  <p>Hitting backspace now, you delete the line in one go without having to delete any other characters. This works for several contiguous lines at once. Additionally, it can be used for transposing lines. You could drag the selection between the angle brackets to the point marked with a caret:</p>
  
  <pre>
  if (true) {\n
  \t int i = 1;&lt;\n
  \t i *= 2;&gt;\n
  \t i += 3;^\n
  }\n
  </pre>
  
  <p>This leaves you with:</p>
  
  <pre>
  if (true) {\n
  \t int i = 1;\n
  \t i += 3;&lt;\n
  \t i *= 2;&gt;\n
  }\n
  </pre>
  
  <p>where lines 3 and 4 have switched place.</p>
  
  <p>There are variations on this theme. When you want to delete line 3, you could also select the following characters:</p>
  
  <pre>
  if (true) {\n
  \t int i = 1;\n
  &lt;\t i *= 2;\n
  &gt;\t i += 3;\n
  }\n
  </pre>
  
  <p>In fact, this is what Visual Studio does if you tell it to select a complete line. You do this by clicking in the margin between your code and the column where the red circles go which indicate breakpoints. The mouse pointer is mirrored in that area to distinguish it a little better, but I think it's too narrow and physically too far removed from the code I want to select.</p>
  
  <p>Maybe this method is useful to other people as well, even if it only serves to make them aware of how newlines are handled when selecting/deleting text:) It works nicely for most non-specialized text editors. However, given the vast amount of features and plugins for Visual Studio (which I use most), I'm sure there is better way to use it to delete and move lines of code. Getting the indentation right automatically when moving code between different blocks would be nice (i.e. without hitting "Format Document/Selection"). I'm looking forward to suggestions; no rants on micro-optimization, please:)</p>
  
  <hr>
  
  <p><strong><em>Summary of Answers</em></strong></p>
  
  <p>With respect to Visual Studio: Navigating well with the cursor keys.</p>
  
  <p>The solution that would best suit my style of going over and editing code is the <em>Eclipse</em> way:</p>
  
  <p>You can select several consecutive lines of code, where the first and the last selected line may be selected only partially. Pressing ALT+{up,down} moves the complete lines (not just the selection) up and down, fixing indentation as you go. Hitting CTRL+D deletes the lines completely (not just the selection) without leaving any unwanted blank lines. I would love to see this in Visual Studio!</p>