15 Stimmen

überflüssige Leerzeilen in emacs löschen

M-x flush-lines ^$ 

löscht alle Leerzeilen in einem Puffer. Ich möchte jedoch nur zusätzliche Leerzeilen löschen, d.h. wenn es n aufeinanderfolgende Leerzeilen gibt, möchte ich n-1 löschen und eine behalten.

Ich weiß, dass delete-blank-lines die Aufgabe für die Leerzeilen unter dem Punkt erledigt, aber ich möchte eine einfache Lösung, die für den gesamten Puffer funktioniert.

Haben Sie eine Idee, wie man das machen kann? Ist es insbesondere möglich, die Regex ^$ aus meinem ersten Beispiel so zu ändern, dass sie nur auf die zusätzlichen Zeilen passt?

22voto

jlf Punkte 3411
C-x h M-x replace-regexp RET ^ C-q C-j C-q C-j + RET C-q C-j RET

der den gesamten Puffer markiert und zwei oder mehr Leerzeilen durch eine einzige Leerzeile ersetzt.

7voto

Trey Jackson Punkte 72000

Ich weiß nicht, ob es dafür eine eingebaute Funktion gibt, aber Sie können es tun:

M-x nur einzeilig

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

6voto

eGlyph Punkte 1105

C-x C-o (delete-blank-lines) tut genau das. Sie brauchen nur ein wenig Makro-Magie, um es auf einen ganzen Puffer anzuwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X