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.

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.


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.


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.