Обратный M-q, функция незаполненного параграфа
Есть ли обратный для M-q, какой-то unfill-paragraph-function
?
Если у меня есть данные отмены, то это, конечно, легко. То, что я прошу, - это вместо этого возможность объединить строки в абзаце в одну длинную строку сразу после того, как я только что прочитал файл с диска. Это позволило бы затем вставить текст в форму (веб-форму и т.п.), Которая ожидает один разрыв строки для каждого абзаца.
В прошлом я отключил auto-fill
, создал макрос, чтобы удалить EOL, и перейти к следующей строке и применить его несколько раз, но это становится утомительным.
Ответы
Ответ 1
Вот ответ. Короче говоря:
(defun unfill-paragraph ()
"Replace newline chars in current paragraph by single spaces.
This command does the reverse of `fill-paragraph'."
(interactive)
(let ((fill-column 90002000))
(fill-paragraph nil)))
(defun unfill-region (start end)
"Replace newline chars in region by single spaces.
This command does the reverse of `fill-region'."
(interactive "r")
(let ((fill-column 90002000))
(fill-region start end)))
Обновление: я упаковал это здесь, и его можно установить из Marmalade или Melpa.
Ответ 2
См. также M- ^ (удаление-отступ).
Он соединяет текущую строку с предыдущей строкой, поэтому, если вы начинаете с пункта в последней строке абзаца, вы можете продолжать нажимать M- ^ до тех пор, пока все линии не будут объединены.
Ответ 3
Также см. этот пост
http://blog.chrislowis.co.uk/2010/03/03/unfill-region-emacs.html
Что упоминает очень полезный режим ярусов.
Ответ 4
Я сначала использовал решение @sanityinc некоторое время, пока не наступил Stefan Monnier Unfill Paragraph в EmacsWiki. Кажется более надежным
;;; Stefan Monnier <foo at acm.org>. It is the opposite of fill-paragraph
(defun unfill-paragraph (&optional region)
"Takes a multi-line paragraph and makes it into a single line of text."
(interactive (progn (barf-if-buffer-read-only) '(t)))
(let ((fill-column (point-max))
;; This would override `fill-column' if it an integer.
(emacs-lisp-docstring-fill-column t))
(fill-paragraph nil region)))
;; Handy key definition
(define-key global-map "\M-Q" 'unfill-paragraph)
(defun unfill-region (beg end)
"Unfill the region, joining text paragraphs into a single
logical line. This is useful, e.g., for use with
`visual-line-mode'."
(interactive "*r")
(let ((fill-column (point-max)))
(fill-region beg end)))
;; Handy key definition
(define-key global-map "\C-\M-Q" 'unfill-region)
Связывание с M-Q
делает команду намного проще.