2011-10-12 17 views
10

Ho un file di testo che ha fissato le linee di lunghezza, imbottito con spazi finali come:Come si elimina lo spazio bianco in emacs?

hello world     ↩ 
this is some other line  ↩ 
x       ↩ 

e voglio rimuovere gli spazi finali su ogni linea in modo che appaia come

hello world↩ 
this is some other line↩ 
x↩ 

E ' possibile scrivere una macro emacs che possa risolvere questo?

Edit: le linee possono avere qualsiasi numero arbitrario di spazi in esso prima che gli spazi finali alla fine, così

hi  world    ↩ 

può essere una linea valido in questo file.

risposta

1

Emacs è il built-in fixup-whitespace (M-space), che si riduce più di uno spazio per un solo posto:

hello  world   ↩ 
        ^
        cursor 

M-x fixup-whitespace 

hello world ↩ 
     ^
     cursor 

Quindi, si può semplicemente definire una macro che:

  • primo chiama fixup-whitespace
  • quindi rimuove l'ultimo spazio bianco

Un altro potrebbe essere M-x replace-regexp RET [ ]+' RET ' RET, che risolve il problema utilizzando le espressioni regolari.

+1

propriamente corretto domanda è prossimo, da vhallac ... –

+0

Si noti che l'apostrofo non è realmente parte della il suo problema, quindi il tuo consiglio sulla regex è tecnicamente scorretto. s/'/ $/ed è giusto, però. – jrockway

+0

Si prega di notare che la domanda originale conteneva apostrofi. – phimuemue

31

C'è un comando emacs delete-trailing-whitespace che elimina gli spazi dopo l'ultimo carattere. Se lo si esegue senza alcuna regione contrassegnata, pulisce l'intero buffer. Se hai un'area attiva, vengono pulite solo le linee nella regione.

Un sacco di persone aggiungere il seguente codice alla loro .emacs, in modo che ogni volta che si salva un file, tutti gli spazi finali viene ripulito:

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

So che hai già avuto una risposta, ma in aggiunta a fixup-whitespace c'è anche delete-horizontal-whitespace che cancella tutti gli spazi bianchi attorno al punto. Ci sono un paio di altri comandi correlati che sono utili in varie situazioni. Puoi cercarli con M-: (info "(elisp) User-Level Deletion").

Problemi correlati