5

This is the block of text that I intend to copy as rectangle (without the line numbers).

   1. ALM_KRmet_DCDO_RPMP_START
   2. ALM_KRmet_DCDO_RPMP_STOP
   3. ALM_KRmet_DIDC_RPMP_TRIP
   4. ALM_KRmet_RPMP_J_H
   5. ALM_KRmet_DIDO_PUMPOUT
   6. ALM_KRmet_RPMP_VIBR_H

Steps:

  • I keep the cursor in the first line (after the 1.)
  • Press C-x SPC - This enables rectangle-mark-mode
  • I move down along the same column to the last line
  • When I reach the end of the text in the last row, the cursor wouldn't move further to the end of the text in the first row.

When I copy or cut, it leaves the un-highlighted portion (or unselected portion) of the text in the previous lines and copies / cuts only that is selected.

Question

What should I do, if I intend to copy the entire block of text (with the smallest length text in the last row)
Is there a straight forward way to achieve this? Sublime text is able to do it without any issues.

Drew
  • 75,699
  • 9
  • 109
  • 225
Prasanna
  • 1,470
  • 16
  • 30
  • Do you see the same thing when you start Emacs using `emacs -Q` (no init file)? If not, bisect your init file to see what's causing it. – Drew Feb 28 '17 at 15:29
  • @Prasanna: I can't reproduce this (Emacs 25.1.). I'm using `C-e` and then `C-f`to move the cursor in the last line.... – Dieter.Wilhelm Feb 28 '17 at 16:03
  • As Stefan mentions, this is fixed in Emacs 25. However note that in this *particular* case you can trivially use the *end* of the first line as one of your corners. Otherwise you would insert some spaces temporarily (or use the trick of temporarily enabling `artist-mode` to let you move the cursor past the ends of lines without inserting spaces). – phils Feb 28 '17 at 21:32

2 Answers2

8

My crystal ball tells me you're using Emacs-24.5, which indeed had this limitation. This has been fixed in Emacs-25 where rectangle-mark-mode has been improved so you can move the cursor past the "end" of a line (and where you can use C-x C-x to go to another corner of the rectangle as well).

Stefan
  • 26,154
  • 3
  • 46
  • 84
3

I usually do this by moving point to the end of the last line in the block, just as you have described, but then I insert spaces at the end of the line until point is in the last column that I want to cut. Then C-x r k cuts the entire rectangle; spaces will be added to the ends of any lines that are shorter than the width of the block.

lmjohns3
  • 253
  • 4
  • 11
  • 1
    And note that a `M-\ ` after the copy command will delete all the trailing spaces in a single step. Or you may prefer to simply *undo* them (which is most likely also a single step). – phils Feb 28 '17 at 21:37