Come commentare un blocco di codice in Emacs?


12

In Emacs, come commentare un blocco di testo, ovvero come indentare un blocco di testo verso destra da ncaratteri spazi bianchi e mettere una sequenza di caratteri scelta, diciamo ##, all'inizio di ogni riga?

Originale

foo
bar foobar
   foo bar

desiderata:

# foo
# bar foobar
#    foo bar
  • Ho bisogno di un metodo che non interferisca con la modalità CUA.
  • comment-dwin non mi permette di scegliere una sequenza di caratteri arbitraria.

Risposte:


15

Un modo è usare string-rectangle( C-x r t).

Segna il blocco, quindi chiama string-rectanglee dai ##come stringa da inserire.


3
Ecco alcuni passaggi concreti: 1) sposta il cursore all'inizio 2) C-M-@3) sposta il cursore fino alla fine 4) C-x r t5) digita la sequenza di caratteri del prefisso, ad esempio ## , premiENT
qazwsx il

è anche possibile fare l'inverso?
mustISignUp,

Puoi selezionare un rettangolo ed eliminarlo conC-x R K
Juancho,

10

A seconda della modalità in uso (ad es. CC Mode, Lisp Mode) è possibile selezionare la regione e quindi utilizzare il comando comment-region(generalmente associato a Cc Cc. Se tutto è impostato correttamente, dovrebbe utilizzare i caratteri di commento appropriati per il tipo di file stai modificando.


9
In che cosa differisce M-;?
qazwsx,

4
@duperuser M-;è un comando di commento più generale. Quando non è presente alcuna regione attiva, inserisce un commento (dopo ogni istruzione sulla riga e allineato con la colonna dei commenti). Quando viene selezionata una regione, si comporta come comment-region. Quando non è presente alcuna regione attiva, comment-regionnon inserisce un commento.
jwernerny,

Non solo, ma a comment-regiondifferenza comment-dwim(che è M-;di default) consente di nidificare in modo flessibile e bloccare i commenti più inutili . Usa il piano C-uper annidare un livello di nidificazione. (Mi lego C-x C-;a comment-region. In realtà, lo lego a comment-region-linesda misc-cmds.el.)
Disegnò il

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.