Навпроти заповнення абзацу


25

Emacs має функцію fill-paragraph. Чи є якась функція, яка буде робити протилежне?

У мене абзац вже заповнений, і замість цього я хочу його в простому рядку?


1
fill-paragraphце НЕ виправдовує пункт, якщо ви не використовуєте префікс аргумент або передати його не- nilперший аргумент. Див. (Emacs)Fill Commands .
Дрю

Відповіді:


20

Цитуючи з Emacs Wiki , Стефан Моньє:

Якщо не заповнити абзац, об'єднуються всі рядки в абзаці в один рядок. Це протилежне FillParagraph .

Він працює там, де рядок закінчується символом нового рядка (”\ n”), а абзаци розділяються порожніми рядками. Щоб закінчити абзац в одному новому рядку, скористайтеся функцією нижче:

;;; It is the opposite of fill-paragraph    
(defun unfill-paragraph ()
  "Takes a multi-line paragraph and makes it into a single line of text."
  (interactive)
  (let ((fill-column (point-max)))
    (fill-paragraph nil)))

І прив’язати його до ключа:

 ;; Handy key definition
 (define-key global-map "\M-Q" 'unfill-paragraph)

Див. Також UnfillRegion та UnwrapLine .


12
Це пряма копія зі сторінки Emacs Wiki UnfillParagraph , а атрибуцію автора (Стефана Моньє) видалено. Тут корисно розмістити інформацію, але принаймні уточнити, хто написав код та посилання на цю сторінку вікі.
Дрю

12
Просто ввічливо додавати атрибуцію, коли ви використовуєте чужу інформацію.
nicael

2
Дякуємо Малабарбі за внесення змін. @KingShimkus: nicael пояснив, чому це краще.
Дрю

2
Якщо ви публікуєте вміст, написаний кимось іншим , ви повинні підтвердити свої джерела.
Жил "ТАК - перестань бути злим"

1
Зверніть увагу, що посилання на джерело змінено. Я відредагував це у відповіді.
smonff

4

Моїм методом було б розміщення курсору в останньому рядку абзацу та натискання M-^декількох разів.

Краса цього ярлика полягає в тому, що поряд з з'єднанням ліній він зменшує будь-яку кількість проміжків відступу в єдине ціле.


AFAIK, ви можете це зробити, M-^і вам потрібно лише утримувати клавішу. Функція названа delete-indentation.
rasmus

Що таке ім'я функції M-S-^, воно, здається, не працює для мене?
Сібі

Так, функція є, delete-indentationі ярлик описаний в Emacs як M-^- shift ( S) був доданий мною, тому що вам доведеться її утримувати в будь-якому випадку. Вибачте за плутанину.
Раджиш

2

Зараз для цього є unfillпакет .

Забезпечує команди для явно незаповнення (тобто розпакування) абзаців та регіонів, а також команду, яка переключатиметься між заповненням та невиконуванням поточного абзацу чи регіону.

Він заснований спочатку на XAH Лі приклади , а потім переписаний на основі статті Артура Malabarba

Він передбачає наступне:

M-x unfill-region
M-x unfill-paragraph
M-x unfill-toggle
M-x toggle-fill-unfill

Зручно додати зручну клавіатуру на ваш вибір, наприклад:

(global-set-key (kbd "<f8>") 'toggle-fill-unfill)

Чи можете ви надати більше інформації про це @easyE?
smonff

1
Моя помилка: код , заснований на прикладах XAH Лі вже НЕ була включена як частина Emacs, але [ це включено в пакет MELPA] ( melpa.org/#/unfill ).
easyE

@easyE Я не знаю різниці між вашим коментарем та змістом моєї відповіді, вибачте.
smonff

Я не стверджував, що це різниця. Я помилився, думаючи, що незайнятий пакунок був включений до Emacs 25, а потім я виправив себе.
easyE

1

Як завжди, є кілька способів зробити це, тому я кину ще одну відповідь на ринг:

  1. Позначити абзац: M-h

  2. Запит замінити новий рядок пробілом у регіоні:

    M-% C-q C-j RET SPC RET !


0

Позбавлення бідного чоловіка також можна зробити, попередньо встановивши fill-columnякесь смішно високе значення (я використовую 9999), а потім заповнивши його. Так , наприклад, C-u 9999 C-x f M-q C-u 70 C-x f. (Крім того , ви можете віддати перевагу , C-9 C-9 C-9 C-9щоб C-u 9999.)


0

У режимі Evil є Jприв'язка ключа normal modeвід VIM. Він з'єднує рядок нижче і поточний рядок в один рядок. Отже, натиснувши його кілька разів, ви можете скасувати абзац.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.