Ответ 1
C-x h M-x replace-regexp RET ^ C-q C-j C-q C-j + RET C-q C-j RET
который отмечает весь буфер и заменяет две или более пустых строк одной пустой строкой.
M-x flush-lines ^$
удаляет все пустые строки в буфере. Однако я хочу удалить лишние пустые строки, то есть, если есть n последовательных пустых строк, я хочу удалить n-1 и сохранить один.
Я знаю, что delete-blank-lines выполняет задание для пустых строк под точкой, однако мне нужно простое решение, которое работает для всего буфера.
Любые идеи, как это сделать? Особенно возможно изменить regex ^ $из моего первого примера, чтобы соответствовать только дополнительным строкам?
C-x h M-x replace-regexp RET ^ C-q C-j C-q C-j + RET C-q C-j RET
который отмечает весь буфер и заменяет две или более пустых строк одной пустой строкой.
C-x C-o (delete-blank-lines) делает именно это. Вам просто понадобится небольшая макромагия, чтобы запустить ее на весь буфер.
Я не знаю о встроенной функции для этого, но вы можете сделать:
Только M-x для одиночных строк
(defun single-lines-only ()
"replace multiple blank lines with a single one"
(interactive)
(goto-char (point-min))
(while (re-search-forward "\\(^\\s-*$\\)\n" nil t)
(replace-match "\n")
(forward-char 1)))
В режиме зла вы можете использовать следующее регулярное выражение:: :%s/\n\n\n//g