2011-10-12 7 views
10

Tengo un archivo de texto que se ha fijado las líneas de longitud, acolchado por espacios finales como:¿Cómo se borra el espacio en blanco en emacs?

hello world     ↩ 
this is some other line  ↩ 
x       ↩ 

y quiero quitar los espacios finales en cada línea para que parezca que

hello world↩ 
this is some other line↩ 
x↩ 

¿Es posible escribir una macro de emacs que pueda resolver esto?

Editar: las líneas pueden tener cualquier número arbitrario de espacios en él antes de que los espacios de fuga en el extremo, por lo

hi  world    ↩ 

pueden ser una línea válida en este archivo.

Respuesta

1

Emacs ha incorporado en fixup-whitespace (M-space), que se reduce más de un espacio a un solo espacio:

hello  world   ↩ 
        ^
        cursor 

M-x fixup-whitespace 

hello world ↩ 
     ^
     cursor 

Por lo tanto, sólo tiene que definir una macro que:

  • primera llama fixup-whitespace
  • entonces desaparece el último espacio en blanco

Otro podría ser M-x replace-regexp RET [ ]+' RET ' RET, que resuelve el problema utilizando expresiones regulares.

+1

pregunta realmente correcto es el siguiente, desde vhallac ... –

+0

Tenga en cuenta que el apóstrofe no es realmente parte de su problema, por lo que su consejo sobre la expresión regular es técnicamente incorrecto. s/'/ $/y es correcto, sin embargo. – jrockway

+0

Tenga en cuenta que la pregunta original contenía apóstrofes. – phimuemue

31

Hay un comando de emacs delete-trailing-whitespace que elimina los espacios en blanco después del último carácter. Si lo ejecuta sin ninguna región marcada, limpia todo el buffer. Si tiene una región activa, solo se limpian las líneas de la región.

Mucha gente agregue el código siguiente a su .emacs, por lo que cada vez que guardar un archivo, todos los espacios en blanco finales se limpia:

(add-hook 'before-save-hook 
      'delete-trailing-whitespace) 
1

Sé que ya tiene una respuesta, pero en addtion a fixup-whitespace también hay delete-horizontal-whitespace que elimina todos los espacios en blanco alrededor del punto. Hay un par de otros comandos relacionados que son útiles en diversas situaciones. Puede buscarlos con M-: (info "(elisp) User-Level Deletion").

Cuestiones relacionadas