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


12

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

оригинал

foo
bar foobar
   foo bar

Желаемая:

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

Ответы:


15

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

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


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. Если все настроено правильно, следует использовать соответствующие символы комментария для типа файла вы редактируете


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.