Emacsでコードやテキストを編集していると、複数行のインデントをまとめて右や左にずらしたいことがあります。
そんなときに便利なのが、Emacs標準の indent-rigidly コマンドです。
この記事では、選択範囲のインデントを手動で調整する方法と、調整後に操作を終了する方法を紹介します。
1. indent-rigidlyとは?
indent-rigidly は、選択した範囲(region)のインデントをまとめて変更するコマンドです。
通常の indent-region がプログラミング言語の構文に従ってインデントを自動調整するのに対し、indent-rigidly は各行の相対的なインデントを保ちながら、手動で左右に移動できます。
例えば、次のコードがあるとします。
if condition:
print("Hello")
print("World")
この3行をまとめて右に4文字ずらすと、次のようになります。
if condition:
print("Hello")
print("World")
各行のインデントの相対関係が維持されるのが特徴です。
2. 選択範囲のインデントを手動調整する
操作手順は次のとおりです。
C-SPCで範囲選択を開始する- カーソルを移動して対象の行を選択する
C-x TABでindent-rigidlyを実行する- 左右の矢印キーでインデントを調整する
indent-rigidly の実行後は、次のキーで調整できます。
| キー | 動作 |
|---|---|
→ | 右に1文字分移動 |
← | 左に1文字分移動 |
S-→ | 右に tab-width 分移動 |
S-← | 左に tab-width 分移動 |
S-→ と S-← は、Shiftキーを押しながら左右の矢印キーを押す操作です。
※ 矢印キーによる対話的な調整は、Emacsのバージョンや設定によって動作が異なる場合があります。
3. インデント調整を終了するには?
C-x TAB を実行して対話的にインデントを調整した後は、RET(Enterキー) を押すと調整を確定して終了できます。
基本的な流れは次のとおりです。
C-SPC 範囲選択を開始
カーソル移動 範囲を選択
C-x TAB indent-rigidly を実行
→ → → 右に3文字分移動
RET 調整を確定して終了
操作を中断したい場合は C-g を使用します。
ただし、C-g を押しても、それまでに変更したインデントが自動的に元に戻るとは限りません。
変更を取り消したい場合は、必要に応じて undo(通常は C-/)を使用します。
4. 指定した文字数だけインデントを変更する
対話的な調整だけでなく、数値を指定して一度にインデントを変更することもできます。
右に4文字ずらす場合
C-u 4 C-x TAB
左に4文字ずらす場合
C-u - 4 C-x TAB
こちらは変更したい文字数が決まっているときに便利です。
5. indent-regionとの違い
Emacsには、インデントを調整するための別のコマンドとして indent-region もあります。
| コマンド | キーバインド | 用途 |
|---|---|---|
indent-rigidly | C-x TAB | 選択範囲を手動で左右にずらす |
indent-region | C-M-\ | 構文ルールに従って自動整形する |
例えば、PythonやCなどのコードを構文に従って整形したい場合は indent-region が適しています。
一方、コードの構造を変えずに、複数行をまとめて右や左に移動させたい場合は indent-rigidly が便利です。
まとめ
Emacsで選択範囲のインデントを手動調整するには、indent-rigidly を使用します。
覚えておきたい操作は以下のとおりです。
| 操作 | キー |
|---|---|
| 範囲選択を開始 | C-SPC |
| 手動インデント調整 | C-x TAB |
| 右に移動 | → |
| 左に移動 | ← |
| 調整を確定して終了 | RET |
| 操作を中断 | C-g |
| 右に4文字移動 | C-u 4 C-x TAB |
| 左に4文字移動 | C-u - 4 C-x TAB |
特に覚えておきたいのは、C-x TAB で調整を開始し、RET で終了するという操作です。
複数行のインデントを手動で微調整したいときに役立ちます。