Emacsで行の先頭にあるスペースを削除する方法

Emacsで文章を書いている時に、文の先頭にあるスペースを削除したい場合があったとします。
具体例としてはOrg-modeでplain textにエクスポートしたとき、見出しのレベルに応じて段落がスペースによって字下げされるといったことがあります。それはエクスポートの書式設定で対処すべき話なのですが、設定項目を探すのに時間がかかったりする場合もあるので、今回はEmacsの文字列置換機能で対処する方法を考えてみます。

例として次のような文章について考えてみます(文章の内容は特に意味はないです😜)。
この文章では2行目と3行目の先頭にそれぞれ2つの半角スペースが入っています。
これくらいならDeleteかBackspaceで消せば簡単に済みますが、一括して消せる方法を覚えておけば処理すべき数が増えても簡単に対応できます。

Emacsにはいくつかの置換機能があるので、その中から正規表現でパターンマッチングして一括で処理するreplace-regexpという方法を使います。
コマンドは
M-x replace-regexp

として、その後に置換したいパターンを入力してエンター。次に何の文字列に置き換えるかを入力してエンターとすると一括で変更されます。

上の例文で先頭の2つの半角スペースを消すには
M-x replace-regexp <RET>^  <RET><RET>

とします。<RET>はエンターキーを押すことを現しています。
この書き方では分かりにくいのですが、まず置換したいパターンに
「^  」(サーカムフレックス + スペース + スペース)
を指定しています。そして今回は置き換えるのではなく、削除するので後半は何も入力せずエンターキーを押しています。
(サーカムフレックスは別名キャレット、ハット記号とも呼ばれる)

一連の操作を動画にすると以下のようになります。


サーカムフレックスは行の先頭を指定するもので、これがあると先頭にあるものだけ置換対象に選ぶことができます。
以上の方法ではコマンドを実行するとすぐに一括で置換されますが、一つずつどれを置換するか確認しながら行える方法もあります。



コメント

スポンサーリンク


このブログの人気の投稿

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplotでプロットなどの色をcolornameの指定で変更する

Pythonのformat()を使って1桁の16進数でも2桁で出力する方法

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)