Как прокомментировать блок кода в Emacs?

12

В Emacs, как комментировать блок текста, т. Е. Как сделать отступ блока текста справа от nпробельных символов и поместить выбранную последовательность символов, скажем ##, в начале каждой строки?

оригинал

foo
bar foobar
   foo bar

Желаемая:

# foo
# bar foobar
#    foo bar
  • Мне нужен метод, который не мешает режиму CUA.
  • comment-dwin не позволяет мне выбирать произвольную последовательность символов.
qazwsx
источник

Ответы:

15

Одним из способов является использование string-rectangle( C-x r t).

Отметьте блок, затем вызовите string-rectangleи передайте ##в качестве строки для вставки.

Juancho
источник
3
Вот более конкретные шаги: 1) переместите курсор в начало 2) C-M-@3) переместите курсор в конец 4) C-x r t5) введите префикс последовательности символов, например ## , нажмитеENT
qazwsx
также возможно сделать обратное?
mustISignUp
Вы можете выбрать прямоугольник и удалить его с помощьюC-x R K
Juancho
10

В зависимости от того, какой режим вы используете (например, режим CC, режим Lisp), вы можете выбрать регион и затем использовать команду comment-region(обычно привязанную к Cc Cc. Если все настроено правильно, следует использовать соответствующие символы комментария для типа файла вы редактируете

jwernerny
источник
9
Чем это отличается от M-;?
qazwsx
4
@duperuser M-;- это более общая команда комментирования. Когда нет активной области, он вставляет комментарий (после любых операторов в строке и выравнивается с колонкой комментариев). Когда регион выбран, он ведет себя как comment-region. Когда нет активного региона, comment-regionне вставляется комментарий.
Jwernerny
Не только это, но comment-region, в отличие от comment-dwim(что M-;по умолчанию) позволяет гибко вкладывать и удалять вкладки комментариев. Используйте обычный, C-uчтобы раскрутить один уровень вложенности. (Я привязывать C-x C-;к comment-regionдействительности, я связываю его. comment-region-linesС misc-cmds.el.)
Drew
6

Вы хотите выбрать код региона, а затем M-;

olleicua
источник
Лучший и простой способ Emacs ответ.
Маноэль Вилела