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

borra todas las líneas en blanco en un búfer. Sin embargo, solo quiero eliminar líneas en blanco adicionales, es decir, si hay n líneas en blanco consecutivas, quiero eliminar n-1 y conservar una.eliminar líneas en blanco adicionales en emacs

Sé que delete-blank-lines hace el trabajo para las líneas en blanco debajo del punto, sin embargo, quiero una solución simple que funcione para todo el buffer.

¿Alguna idea de cómo hacer esto? Especialmente, ¿es posible modificar la expresión regular $ de mi primer ejemplo para que coincida solo con las líneas adicionales?

Respuesta

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

que marca toda la memoria intermedia en lugar de dos o más líneas en blanco con una sola línea en blanco.

+0

Del mismo modo, puede hacer: 'M-x replace-regexp RET^C-q C-j $ RET RET'. Esto reemplazará dos líneas en blanco consecutivas con una sola. –

4

No sé acerca de una función integrada para esto, pero se puede hacer:

Mx individuales líneas de sólo

(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-o (borrar líneas en blanco) hace exactamente eso. Solo necesitarás un poco de macro magia para ejecutarlo en un buffer completo.

+1

Se supone que es 'C-x C-o',' C-x o' llamadas 'other-window'. – monotux

+0

cierto, tenía prisa por escribir la respuesta. Gracias. – eGlyph

Cuestiones relacionadas