2011-10-12 5 views
10

Je dispose d'un fichier texte qui fixe les lignes de longueur, rembourré par des espaces de fuite comme:Comment supprimer les espaces blancs dans emacs?

hello world     ↩ 
this is some other line  ↩ 
x       ↩ 

et je veux supprimer les espaces de fin de chaque ligne de sorte qu'il ressemble à

hello world↩ 
this is some other line↩ 
x↩ 

Est-il possible d'écrire une macro emacs qui peut résoudre ce problème?

Edit: les lignes peuvent avoir un nombre arbitraire d'espaces avant les espaces de fin à la fin, donc

hi  world    ↩ 

peut être une ligne valide dans ce fichier.

Répondre

1

Emacs a le fixup-whitespace (M-space) intégré, qui rétrécit plus d'un espace à un seul espace:

hello  world   ↩ 
        ^
        cursor 

M-x fixup-whitespace 

hello world ↩ 
     ^
     cursor 

Ainsi, vous pouvez simplement définir une macro qui:

  • premier appelle fixup-whitespace
  • supprime alors le dernier des espaces

Un autre pourrait être M-x replace-regexp RET [ ]+' RET ' RET, ce qui résout le problème en utilisant des expressions régulières.

+1

est à côté, de vhallac ... –

+0

Notez que l'apostrophe n'est pas vraiment partie de son problème, donc votre conseil sur l'expression rationnelle est techniquement incorrect. s/'/ $/et c'est vrai, cependant. – jrockway

+0

Veuillez noter que la question originale contenait des apostrophes. – phimuemue

31

Il existe une commande emacs delete-trailing-whitespace qui supprime les espaces après le dernier caractère. Si vous l'exécutez sans aucune région marquée, il nettoie le tampon entier. Si vous avez une région active, seules les lignes de la région sont nettoyées.

Beaucoup de gens ajoutez le code suivant à leur .emacs, de sorte que chaque fois qu'ils enregistrent un fichier, tous les espaces de fin est nettoyé:

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

Je sais que vous avez déjà une réponse, mais Il y a également et delete-horizontal-whitespace qui supprime tout l'espace autour du point. Il y a quelques autres commandes connexes qui sont utiles dans diverses situations. Vous pouvez les rechercher avec M-: (info "(elisp) User-Level Deletion").

Questions connexes