Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

In Emacs, how to comment a block of text, i.e. how to indent a block of text rightward by n whitespace characters and put a chosen character sequence, say ##, at the beginning of each line?

Original

foo
bar foobar
   foo bar

Desired:

# foo
# bar foobar
#    foo bar
  • I need a method that doesn't interfere with CUA mode.
  • comment-dwin doesn't allow me to choose arbitrary character sequence.
share|improve this question
up vote 12 down vote accepted

One way is to use string-rectangle (C-x r t).

Mark the block, then call string-rectangle and give ## as a string to insert.

share|improve this answer
2  
Here are more concrete steps: 1) move cursor to beginning 2) C-M-@ 3) move cursor to end 4) C-x r t 5) type prefix character sequence, such as ## , press ENT – qazwsx Jan 18 '12 at 23:25
    
is it also possible to do the inverse? – mustISignUp May 13 at 11:07
    
You can select a rectangle and delete it with C-x R K – Juancho May 13 at 11:09

Depending on what mode you are running (e.g. CC Mode, Lisp Mode) you can select the region and then use the command comment-region (usually bound to C-c C-c. If everything is set correctly, it should use the appropriate comment characters for the type of file you are editing.

share|improve this answer
6  
How is this different from M-;? – qazwsx Jan 19 '12 at 19:30
2  
@duperuser M-; is a more general commenting command. When there is no active region, it inserts a comment (after any statements on the line, and lined up with the comment column). When a region is selected, it behaves like comment-region. When there is no active region, comment-region does not insert a comment. – jwernerny Jan 19 '12 at 19:43

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .