Next: , Up: Indentation   [Contents][Index]


24.1 インデントコマンド

TAB (indent-for-tab-command)コマンドとは別に、Emacsは他の方法でインデントを処理する、さまざまなコマンドを提供します。

C-M-o

カレント行をポイント位置で分割します(split-line)。その行のポイントの後にあるテキストは新しい行となり、ポイントがあった位置と同じ列にインデントされます。このコマンドは、最初にポイントを複数のスペースまたはタブを飛び越えて移動させます。その後、ポイントは挿入された行の前に配されます。

M-m

カレント行の最初の空白以外の文字に移動(前方または後方)します(back-to-indentation)。その行に空白文字しかない場合は、その行の行末に移動します。

M-i

ポイント位置の空白文字を次のタブストップまでインデントします(tab-to-tab-stop)。Tab Stopsを参照してください。

M-x indent-relative

ポイントが前の行(実際には最後の空行以外の行)の、最初の空白以外の文字に揃うように、ポイント位置に空白文字を挿入します。ポイントがすでにその位置より右にある場合は、かわりにtab-to-tab-stopを実行します — ただし数引数を指定した場合は何もしません。

M-^

前の行とカレント行をマージします(delete-indentation)。このコマンドはカレント行の前にある任意のインデントと、行の境界を1つのスペースで置き換えて、2つの行を明解に“結合”します。

特別なケースとして、結合された文字が連続する開きカッコまたは閉じカッコの場合、または他の改行が続く場合、1つのスペースは省略されます(Lispコードにたいして有用)。

fillプレフィクスが存在して、それが改行の後ろにあった場合、M-^はfillプレフィクスを削除します。Fill Prefixを参照してください。

C-M-\

リージョンのすべての行にたいして、各行の先頭でTABをタイプしたかのようにインデントします(indent-region)。

数引数が与えられた場合、その列番号までリージョンのすべての行をインデントします。

C-x TAB

このコマンドは、リージョン内で開始されるすべての行のインデントを変更するのに使用されます。インデントの変更は、影響を受ける行を“厳格な(rigid)”単位として移動することにより行われます。

引数を指定しないで呼び出されたとき、このコマンドは影響を受ける行のインデントを対話的に調整するために、transientモードをアクティブにします。transientモードがアクティブの間は、LEFTまたはRIGHTにより、スペース1文字単位で左または右にインデントします。S-LEFTまたはS-RIGHTとタイプすることにより、タブストップ単位で左または右にインデントすることもできます。他のキーをタイプするとtransientモードは無効になり、通常の編集を再開します。

プレフィクス引数nを指定して呼び出すと、このコマンドは行をn個のスペースでインデントします(transientモードは有効になりません)。nに値を与えると後方にインデントするので、リージョン内の行のすべてのインデントを除去したいときは、以下のように充分に大きい負の引数を与えます。

C-u -999 C-x TAB