Обратный M-q, функция незаполненного параграфа

17

Есть ли обратный для M-q , какой-то unfill-paragraph-function ?

Если у меня есть данные отмены, то это, конечно, легко. То, что я прошу, - это вместо этого возможность объединить строки в абзаце в одну длинную строку сразу после того, как я только что прочитал файл с диска. Это позволило бы затем вставить текст в форму (веб-форму и т. П.), Которая ожидает один разрыв строки для каждого абзаца.

В прошлом я отключил auto-fill , создал макрос, чтобы удалить EOL и перейти к следующей строке, и наносил его несколько раз, но это становится утомительным.

    
задан Calaf 15.07.2011 в 15:32
источник

4 ответа

21

Вот ответ . Короче говоря:

(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 .

    
ответ дан sanityinc 15.07.2011 в 15:37
  • Отлично. Благодарю. –  Calaf 15.07.2011 в 16:32
  • Мне интересно это целое число. Откуда она исходит, и есть ли причина не использовать наиболее позитивный-fixnum? –  phils 15.07.2011 в 16:43
  • Вы должны были спросить у оригинального автора, но вполне возможно, что most-positive-fixnum не существует в каждой версии и варианте Emacs. Мне тоже любопытно. –  sanityinc 15.07.2011 в 21:03
  • Отличная ссылка. Из того же источника, комментарий-uncomment-block еще лучше: xahlee.org/emacs/modernization_fill-paragraph.html Это будет моя новая команда M-q по умолчанию. –  Tyler 29.05.2012 в 18:54
7

См. также M- ^ (удаление-отступ).

Он соединяет текущую строку с предыдущей строкой, поэтому, если вы начинаете с пункта в последней строке абзаца, вы можете продолжать нажимать M- ^ до тех пор, пока все линии не будут объединены.

    
ответ дан David Röthlisberger 23.05.2012 в 16:00
  • Этот подход не учитывает такие вещи, как синтаксис комментариев, хотя он, по крайней мере, достаточно умный, чтобы вставлять пробелы после соответствующей пунктуации (в зависимости от режима). –  phils 23.05.2012 в 16:13
  • phils: «Если есть префикс заполнения, удалите его с начала этой строки». С точкой в ​​первом столбце без заполнения-префикса вы можете использовать C-x. (set-fill-prefix), а затем M- ^ будет работать так, как вы хотите. Жаль, что M- ^ не понимает fill-prefix самостоятельно, как M-q. –  David Röthlisberger 23.05.2012 в 16:23
  • Аккуратно .. и это получается из коробки. –  Calaf 23.05.2012 в 23:13
  • Ага, хороший трюк; Благодарю. Я уже использовал это :) –  phils 24.05.2012 в 08:04
0

Также см. этот пост

Ссылка

Что упоминает очень полезный режим ярусов.

    
ответ дан dfb 22.06.2012 в 01:31
0

Я впервые использовал решение @ sanityinc некоторое время, пока не набрал Unfill Paragraph Stefan Monnier в 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's 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 делает команду намного проще.

    
ответ дан Ébe Isaac 27.07.2017 в 07:27