Wie kommentiere ich einen Codeblock in Emacs?

13

Wie kann man in Emacs einen Textblock kommentieren, dh wie kann man einen Textblock mit nLeerzeichen nach rechts einrücken und eine ausgewählte Zeichenfolge beispielsweise ##am Anfang jeder Zeile einfügen?

Original

foo
bar foobar
   foo bar

Gewünscht:

# foo
# bar foobar
#    foo bar
  • Ich benötige eine Methode, die den CUA-Modus nicht beeinträchtigt.
  • comment-dwin erlaubt mir nicht, eine beliebige Zeichenfolge zu wählen.
qazwsx
quelle

Antworten:

15

Eine Möglichkeit ist die Verwendung von string-rectangle( C-x r t).

Markieren Sie den Block, rufen Sie ihn auf string-rectangleund geben Sie ihn ##als einzufügenden String ein.

Juancho
quelle
3
Hier sind konkretere Schritte: 1) Cursor an den Anfang bewegen 2) C-M-@3) Cursor an das Ende bewegen 4) C-x r t5) ## ENT
Präfixzeichenfolge eingeben
ist es auch möglich das inverse zu machen?
mustISignUp
Sie können ein Rechteck auswählen und mitC-x R K
Juancho
11

Je nachdem, welchen Modus Sie ausführen (z. B. CC-Modus, Lisp-Modus), können Sie die Region auswählen und dann den Befehl comment-region(normalerweise an Cc Cc gebunden) verwenden. Wenn alles richtig eingestellt ist, sollten die entsprechenden Kommentarzeichen für den Dateityp verwendet werden Sie bearbeiten.

jwernerny
quelle
9
Wie unterscheidet sich das von M-;?
qazwsx
4
@duperuser M-;ist ein allgemeinerer Befehl zum Kommentieren. Wenn kein aktiver Bereich vorhanden ist, wird ein Kommentar eingefügt (nach Anweisungen in der Zeile und in der Kommentarspalte). Wenn eine Region ausgewählt ist, verhält es sich wie comment-region. Wenn keine aktive Region vorhanden ist, comment-regionwird kein Kommentar eingefügt.
jwernerny
Nicht nur das, sondern comment-regionim Gegensatz zu comment-dwim(was M-;standardmäßig ist) können Sie Kommentare flexibel verschachteln und nicht verschachteln . Verwenden Sie plain C-u, um eine Verschachtelungsebene zu entfernen. (Ich binde C-x C-;an comment-region. Eigentlich binde ich es an comment-region-linesvon misc-cmds.el.)
Drew
6

Sie möchten die Coderegion auswählen und dann M-;

olleicua
quelle
Die beste und einfachste Antwort auf Emacs Way.
Manoel Vilela