¿Cómo comentar un bloque de código en Emacs?


12

En Emacs, la forma de comentar un bloque de texto, es decir, cómo sangrar un bloque de texto hacia la derecha por nespacios en blanco y poner una secuencia de caracteres elegido, por ejemplo ##, al comienzo de cada línea?

Original

foo
bar foobar
   foo bar

Deseado:

# foo
# bar foobar
#    foo bar
  • Necesito un método que no interfiera con el modo CUA.
  • comment-dwin no me permite elegir una secuencia de caracteres arbitraria.

Respuestas:


14

Una forma es usar string-rectangle( C-x r t).

Marque el bloque, luego llame string-rectangley dele ##como una cadena para insertar.


3
Aquí hay más pasos concretos: 1) mover el cursor al comienzo 2) C-M-@3) mover el cursor al final 4) C-x r t5) escribir la secuencia de caracteres del prefijo, como ## , presioneENT
qazwsx

¿También es posible hacer lo inverso?
mustISignUp

Puede seleccionar un rectángulo y eliminarlo conC-x R K
Juancho

11

Dependiendo de qué modo esté ejecutando (por ejemplo, Modo CC, Modo Lisp), puede seleccionar la región y luego usar el comando comment-region(generalmente vinculado a Cc Cc. Si todo está configurado correctamente, debe usar los caracteres de comentario apropiados para el tipo de archivo estás editando


77
¿Cómo es esto diferente de M-;?
qazwsx

44
@duperuser M-;es un comando de comentarios más general. Cuando no hay una región activa, inserta un comentario (después de cualquier declaración en la línea y se alinea con la columna de comentarios). Cuando se selecciona una región, se comporta como comment-region. Cuando no hay una región activa, comment-regionno inserta un comentario.
jwernerny

No solo eso, sino que comment-region, a diferencia comment-dwim(que es el M-;predeterminado), le permite anidar de forma flexible y anular los comentarios de bloque. Use simple C-upara anular un nivel de anidamiento. (Ato C-x C-;a comment-region. En realidad, yo ato a comment-region-linespartir misc-cmds.el.)
dibujó

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.