Emacsにはwhitespace-modeというスペースやタブを可視化するモードがあります。

使いかたは簡単で、 M-x whitespace-modeM-x global-whitespace-mode をすれば、スペースやタブ、さらに行末の余計なスペースや空行などが色で表示されるようになります。

表示する条件は、 M-x whitespace-toggle-options で変更できますし、見た目はカスタム変数の whitespace-style でカスタマイズすることができます。ここは用途にもよりますし、好みもあるので割愛。

削除される対象は、

  • ファイルの先頭と最後の空行
  • 行の先頭や末尾にある半角スペースやタブ

です。全角スペースは対象外のようです。

さらにファイルを保存したときに自動で余計なスペースなどを削除することもできます。

この機能を有効にするには、カスタム変数 whitespace-action に新しいActionを追加して、Auto Cleanupを選択します。

これで、whitespace-modeが有効にしていると、ファイル保存(C-x C-s)を実行したタイミングで、余計な空白が自動的に削除されるようになります。

Actionには他に次のような選択肢があります。

Report On Bogus

ファイルを保存するときに、問題がある場合は、どんな問題があるかの*Whitespace Report* というバッファが別に表示されます。

Aboort On Bogus

上の Report On Bogus と同様にレポートが表示されますが、ファイルの保存は実行されません。

cleanup

ファイルの保存時ではなく、ファイルを開いたタイミングで余計な空白などが削除されます。ただし保存はされていない状態でなっています。

warn-if-read-only

cleanupauto-cleanup と同時に設定しておくと、読取専用のファイルを開いた場合は、

Can’t cleanup: foobar.org is read-only

のような警告が表示されるようになります。