TAB (indent-for-tab-command)
コマンドのほか、Emacsでは別の方法でインデントを行うためのさまざまなコマンドが用意されています。
現在の行をポイント (split-line)
で分割します。ポイント以降の行のテキストは新しい行となり、ポイントがある位置と同じ列にインデントされます。このコマンドはまず、スペースやタブを越えてポイントを前方に移動させます。その後、ポイントは挿入された改行の前に配置されます。
現在の行の最初の非空白文字(back-to-indentation)へ移動(前方または後方)します。行に非空白文字がない場合は、行末へ移動します。
現在の位置から次のタブストップ(tab-to-tab-stop)までの空白をインデントします。タブストップを参照してください。
ポイントを、前の行(実際には最後の非空白行)の最初の非空白文字と揃うまで空白文字で埋めます。ポイントがすでにそれより右にある場合は、代わりに tab-to-tab-stop
を実行します—ただし、数値引数を指定して呼び出された場合は何もしません。
直前の行と現在の行(delete-indentation)をマージします。これにより、現在の行の先頭にあるインデントと行境界を単一のスペースに置き換えることで、2つの行をきれいに結合します。
特殊なケース(Lispコードで有用)として、結合する文字が連続する開き括弧と閉じ括弧である場合、あるいは接合部が別の改行の後に続く場合には、単一のスペースは省略されます。
フィルプレフィックスがある場合、M-^ は、削除される改行の後にフィルプレフィックスが出現していれば、それを削除します。フィルプレフィックスを参照してください。
プレフィックス引数が指定された場合は、現在の行を次の行に結合します。リージョンがアクティブで、プレフィックス引数が指定されていない場合は、代わりにリージョン内のすべての行を結合します。
各行の先頭に TAB
と入力したかのように、リージョン内のすべての行をインデントしてください(indent-region)。
数値引数が指定された場合、リージョン内のすべての行をその列番号までインデントします。
リージョン内で開始するすべての行をインデントし、該当する行を一つのまとまりとして移動します (indent-rigidly)。
引数なしで呼び出された場合、このコマンドは、対象行のインデントを対話的に調整するための一時モードを有効にします。この一時モードが有効な間、LEFT または RIGHT と入力すると、それぞれ左方向および右方向に1スペース分インデントされます。また、S-LEFT または S-RIGHT と入力することで、次のタブストップまで左方向または右方向にインデントすることも可能です(タブストップを参照)。それ以外のキーを入力すると一時モードが無効になり、そのキーは通常通りに処理されます。
接頭辞引数 n を指定して呼び出された場合、このコマンドは行を n スペース分前方にインデントします(一時モードは有効になりません)。n に負の値を指定すると後方にインデントされるため、次のように大きな負の引数を用いることで、リージョン内の行からすべてのインデントを取り除くことができます:
C-u -999 C-x TAB