Gegenteil von Absatz füllen


25

Emacs hat die Funktion fill-paragraph. Gibt es eine Funktion, die das Gegenteil davon bewirkt?

Ich habe einen bereits ausgefüllten Absatz und möchte ihn stattdessen in einer einfachen Zeile sehen.


1
fill-paragraphhat nicht den Absatz rechtfertigen, es sei denn , Sie ein Präfix - Argument verwenden oder sie übergeben ein nicht nilerste Argument. Siehe (Emacs)Fill Commands .
Drew

Antworten:


20

Zitat aus dem Emacs Wiki , von Stefan Monnier:

Wenn Sie einen Absatz nicht ausfüllen, werden alle Zeilen in einem Absatz zu einer einzigen Zeile zusammengefasst. Es ist das Gegenteil von FillParagraph .

Es funktioniert dort, wo eine Zeile mit einem Zeilenumbruchzeichen ("\ n") endet und Absätze durch Leerzeilen getrennt sind. Verwenden Sie die folgende Funktion, um einen Absatz in einer einzelnen neuen Zeile zu beenden:

;;; 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)))

Und um es an einen Schlüssel zu binden:

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

Siehe auch UnfillRegion und UnwrapLine .


12
Dies ist eine direkte Kopie der Emacs-Wiki-Seite UnfillParagraph , wobei die Autorenangabe (Stefan Monnier) entfernt wurde. Es ist hilfreich, die Informationen hier zu posten, aber zumindest klar zu machen, wer den Code geschrieben und auf diese Wiki-Seite verlinkt hat.
Drew

12
Es ist einfach höflich, Zuschreibungen hinzuzufügen, wenn Sie die Informationen anderer Personen verwenden.
Nicael

2
Vielen Dank an Malabarba für die Änderungen. @KingShimkus: nicael hat erklärt, warum das besser ist.
Drew


1
Beachten Sie, dass sich der Link zur Quelle geändert hat. Ich habe es in der Antwort bearbeitet.
Smonff

4

Meine Methode würde den Cursor in die letzte Zeile des Absatzes setzen und M-^mehrmals schlagen .

Das Schöne an dieser Verknüpfung ist, dass sie neben dem Verbinden von Linien eine beliebige Anzahl von Einrückungsräumen in einen einzigen reduziert.


AFAIK, das kannst du M-^und du musst nur die Taste gedrückt halten. Die Funktion heißt delete-indentation.
Rasmus

Wofür ist der Funktionsname M-S-^, er scheint bei mir nicht zu funktionieren?
Sibi

Ja die Funktion ist delete-indentationund die Verknüpfung wird in Emacs beschrieben als M-^- die shift ( S) wurde von mir hinzugefügt, weil man sie trotzdem festhalten muss. Entschuldigen Sie das Durcheinander.
Rajish

2

Dafür gibt es jetzt das unfillPaket .

Enthält Befehle zum expliziten Auflösen (dh Auflösen) von Absätzen und Bereichen sowie einen Befehl, mit dem zwischen dem Auflösen und Auflösen des aktuellen Absatzes oder Bereichs gewechselt werden kann.

Es basiert ursprünglich auf den Beispielen von Xah Lee und wurde später nach einem Artikel von Artur Malabarba umgeschrieben

Es bietet Folgendes:

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

Es ist praktisch, eine handliche Codierung Ihrer Wahl hinzuzufügen, z.

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

Können Sie weitere Informationen zu diesem @easyE bereitstellen?
Smonff

1
Mein Fehler: Der Code, der auf den Beispielen von Xah Lee basiert, wurde nicht in Emacs integriert, sondern [ ist als MELPA-Paket enthalten] ( melpa.org/#/unfill ).
easyE

@easyE Ich verstehe den Unterschied zwischen Ihrem Kommentar und dem Inhalt meiner Antwort nicht, sorry.
Smonff

Ich habe nicht argumentiert, dass dies ein Unterschied ist. Ich habe mich geirrt, als ich dachte, dass der Packungsinhalt in Emacs 25 enthalten war, und dann habe ich mich selbst korrigiert.
easyE

1

Wie immer gibt es mehrere Möglichkeiten, dies zu tun, also werde ich eine weitere Antwort in den Ring werfen:

  1. Absatz markieren: M-h

  2. Neue Zeile durch Leerzeichen in Region ersetzen:

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


0

Das Auffüllen eines armen Mannes kann auch durchgeführt werden, indem zuerst der fill-columnWert auf einen lächerlich hohen Wert eingestellt wird (ich verwende 9999) und dann gefüllt wird. Zum Beispiel C-u 9999 C-x f M-q C-u 70 C-x f. (Vielleicht bevorzugen Sie C-9 C-9 C-9 C-9es auch C-u 9999.)


0

Im Evil-Modus gibt es die JSchlüsselbindung normal modevon VIM. Es verbindet die Zeile darunter und die aktuelle Zeile zu einer Zeile. Durch mehrmaliges Drücken können Sie das Ausfüllen eines Absatzes rückgängig machen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.