2010-12-11 39 views
10
M-x flush-lines ^$ 

supprime toutes les lignes vides dans un tampon. Cependant, je veux seulement supprimer des lignes vides supplémentaires, c'est-à-dire s'il y a n lignes blanches consécutives, je veux supprimer n-1 et en garder une.supprimer des lignes vides supplémentaires dans emacs

Je sais que delete-blank-lines fait le travail pour les lignes vides sous le point, mais je veux une solution simple qui fonctionne pour l'ensemble du tampon.

Des idées comment faire ceci? Surtout, est-il possible de modifier le regex^$ de mon premier exemple pour ne faire correspondre que les lignes supplémentaires?

Répondre

18
C-x h M-x replace-regexp RET^C-q C-j C-q C-j + RET C-q C-j RET 

qui marque le tampon entier et remplace deux ou plusieurs lignes vides avec une seule ligne vide.

+0

De même, vous pouvez faire: 'M-x remplacer-regexp RET^C-q C-j $ RET RET'. Cela remplacera deux lignes vides consécutives par une seule. –

4

Je ne sais pas d'une fonction intégrée pour cela, mais vous pouvez faire:

Mx simples lignes seulement

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

C-x C-0 (delete-blank-lines) fait exactement cela. Vous aurez juste besoin d'un peu de magie pour l'exécuter sur un tampon entier.

+1

Cela est supposé être 'C-x C-o',' C-x o' appelle 'other-window'. – monotux

+0

vrai, était pressé de taper la réponse. Merci. – eGlyph