思考の泡

プログラミング、サイエンス、その他日常のことをゆるゆると

Emacs のスペース削除コマンド

Emacs にはテキストやコードをエディットする様々なコマンドが用意されています。意外と知られていないホワイトスペースを削除するコマンドを紹介します。

 

delete-horizontal-space (デフォルトのキーバインドで C-\)はポイント(カーソル)の周りのスペース、タブを削除してくれます。prefix 引数を付けて実行すると(C-u C-\)、ポイントから前のスペースだけを削除します。

 

just-one-space (デフォルトで M-SPC)も似たような動作をしますが、こちらは一つだけスペースを残してくれます。これ意外と便利です。

prefix 引数で数値を指定するとその数だけスペースを残してくれます。例えば C-4 M-SPC とするとスペースを4つ残してくれます。

OS によっては M-SPC (Alt+Space) は別の用途に使われていることがありますが、その場合は ESC Space を使いましょう。

 

上で説明したように C-u C-\ でポイントから前のスペースだけを削除してくれますが、後ろのスペースだけを削除してくれるコマンドはないものかと以前から思っていました。例えばコメントの行頭を揃える場合などにこれがあると便利です。探したけれど見つからないので作ってみました。 キーバインドはお好みで。

        
(defun delete-backword-spaces ()
  "ポイントの後ろのホワイトスペースを削除"
  (interactive)
  (let ((orig-pos (point)))
    (delete-region
     orig-pos
     (progn
       (skip-chars-forward " \t")
       (constrain-to-field nil orig-pos t)
       )
     )))

;;; S-delete にバインド
(global-set-key (kbd "<S-delete>") 'delete-backword-spaces)