Como comentar um bloco de código no Emacs?

13

No Emacs, como comentar um bloco de texto, ou seja, como recuar um bloco de texto à direita por ncaracteres de espaço em branco e colocar uma sequência de caracteres escolhida, digamos ##, no início de cada linha?

Original

foo
bar foobar
   foo bar

Desejado:

# foo
# bar foobar
#    foo bar
  • Preciso de um método que não interfira no modo CUA.
  • comment-dwin não me permite escolher uma sequência arbitrária de caracteres.
qazwsx
fonte

Respostas:

15

Uma maneira é usar string-rectangle( C-x r t).

Marque o bloco, depois chame string-rectanglee dê ##como string para inserir.

Juancho
fonte
3
Estes são passos mais concretos: 1) movimento do cursor para começando 2) C-M-@de cursor 3) movimento para terminar 4) C-x r t5) sequência de caracteres de tipo prefixo, tais como ## , primaENT
qazwsx
também é possível fazer o inverso?
mustISignUp
Você pode selecionar um retângulo e excluí-lo com #C-x R K
Juancho
11

Dependendo do modo em execução (por exemplo, Modo CC, Modo Lisp), você pode selecionar a região e, em seguida, usar o comando comment-region(geralmente vinculado a Cc Cc. Se tudo estiver definido corretamente, use os caracteres de comentário apropriados para o tipo de arquivo você está editando.

jwernerny
fonte
9
Como isso é diferente M-;?
qazwsx
4
@duperuser M-;é um comando de comentário mais geral. Quando não há região ativa, ele insere um comentário (após qualquer declaração na linha e alinhado com a coluna de comentários). Quando uma região é selecionada, ela se comporta como comment-region. Quando não há região ativa, comment-regionnão insere um comentário.
jwernerny
Não apenas isso, mas comment-region, ao contrário comment-dwim(que é M-;por padrão), permite aninhar e desanimar com flexibilidade os comentários. Use simples C-upara desnaturar um nível de aninhamento. (I ligam-se C-x C-;a comment-regionNa verdade, se ligam a ele. comment-region-linesDe misc-cmds.el.)
Desenhou
6

Você deseja selecionar a região do código e, em seguida, M-;

olleicua
fonte
A melhor e mais simples maneira de responder.
Manoel Vilela