Jak skomentować blok kodu w Emacsie?

12

W Emacsie, jak komentować blok tekstu, tj. Jak wciąć blok tekstu w prawo za pomocą nbiałych znaków i umieścić wybraną sekwencję znaków, powiedzmy ##, na początku każdej linii?

Oryginalny

foo
bar foobar
   foo bar

Pożądany:

# foo
# bar foobar
#    foo bar
  • Potrzebuję metody, która nie zakłóca trybu CUA.
  • comment-dwin nie pozwala mi wybrać dowolnej sekwencji znaków.
qazwsx
źródło

Odpowiedzi:

15

Jednym ze sposobów jest użycie string-rectangle( C-x r t).

Zaznacz blok, a następnie wywołaj string-rectanglei podaj ##jako ciąg do wstawienia.

Juancho
źródło
3
Oto bardziej konkretne kroki: 1) przesuń kursor na początek 2) C-M-@3) przesuń kursor na koniec 4) C-x r t5) wpisz ciąg znaków prefiksu, na przykład ## naciśnijENT
qazwsx
czy można również wykonać odwrotność?
mustISignUp
Możesz wybrać prostokąt i usunąć go za pomocąC-x R K
Juancho
10

W zależności od uruchomionego trybu (np. Tryb CC, Tryb Lisp) możesz wybrać region, a następnie użyć polecenia comment-region(zwykle powiązanego z DW DW. Jeśli wszystko jest ustawione poprawnie, należy użyć odpowiednich znaków komentarza dla typu pliku edytujesz.

jwernerny
źródło
9
Czym to się różni M-;?
qazwsx,
4
@duperuser M-;to bardziej ogólne polecenie komentowania. Gdy nie ma aktywnego regionu, wstawia komentarz (po jakichkolwiek instrukcjach w wierszu i wyrównany z kolumną komentarza). Po wybraniu regionu zachowuje się jak comment-region. Gdy nie ma aktywnego regionu, comment-regionnie wstawia komentarza.
jwernerny
Nie tylko to, ale comment-regionw przeciwieństwie do comment-dwim(co jest M-;domyślnie) pozwala elastycznie zagnieżdżać i unnest blokować komentarze. Użyj zwykłego, C-uaby unnest jeden poziom zagnieżdżenia. (Wiążę C-x C-;z comment-region. Właściwie to wiążę comment-region-linesz misc-cmds.el.)
Drew
6

Chcesz wybrać region kodu, a następnie M-;

olleicua
źródło
Najlepsza i prosta odpowiedź na emacsa.
Manoel Vilela