удалить лишние пустые строки в emacs - PullRequest
12 голосов
/ 12 декабря 2010
M-x flush-lines ^$ 

удаляет все пустые строки в буфере. Однако я хочу удалить только лишние пустые строки, то есть, если есть n последовательных пустых строк, я хочу удалить n-1 и оставить одну.

Я знаю, что delete-blank-lines выполняет работу с пустыми строками под точкой, однако я хочу простое решение, которое работает для всего буфера.

Есть идеи, как это сделать? Особенно возможно изменить регулярное выражение ^ $ из моего первого примера, чтобы оно соответствовало только дополнительным строкам?

Ответы [ 3 ]

20 голосов
/ 12 декабря 2010
C-x h M-x replace-regexp RET ^ C-q C-j C-q C-j + RET C-q C-j RET

, который отмечает весь буфер и заменяет две или более пустых строки одной пустой строкой.

5 голосов
/ 12 декабря 2010

Cx Co (delete-blank-lines) делает именно это.Вам просто нужно немного магии макросов, чтобы запустить его на весь буфер.

5 голосов
/ 12 декабря 2010

Я не знаю о встроенной функции для этого, но вы можете сделать:

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)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...