Next: , Previous: , Up: プログラムのインデント   [Contents][Index]


27.3.2 複数行のインデント

複数行のコードを、1度に再インデントしたいときがあるかもしれません。これを行う1つの方法は、マークを使う方法です。マークがアクティブでリージョンが空でないとき、TABはリージョン内の各行をインデントします。一方、コマンドC-M-\ (indent-region)は、マークがアクティブか否かにかかわらず、リージョン内の各行をインデントします(インデントコマンドを参照してください)。

それらに加えて、Emacsはコードの大きな断片をインデントするために、以下のコマンドを提供します:

C-M-q

カッコでグループ化された、すべての行を再インデントします。

C-u TAB

カッコでグループ化されたすべてを横にシフトして、最初の行が正しくインデントされるようにします。

M-x indent-code-rigidly

リージョン内のすべての行を横にシフトしますが、コメントや文字列内で開始される行は変更しません。

1つのカッコでグループ化されたものを再インデントするには、ポイントをグループ化の前に配して、C-M-qとタイプします。これはグループ化されたものの全体的なインデント(たとえばグループ化が開始される行のインデント)は変更せずに、相対的なインデントを変更します。C-M-qで実行される関数は、Lispモードではindent-pp-sexp、Cモードではc-indent-exp、のようにメジャーモードに依存します。全体的なインデントも同様に訂正したい場合は、最初にTABをタイプします。

グループ内の相対的なインデントは好ましいが、それの最初の行のインデントが好ましくない場合は、その最初の行にポイントを移動してC-u TABとタイプします。Lisp、C、他のいくつかのメジャーモードでは、数引数を指定したTABは通常どおりカレント行をインデントしてから、カレント行で始まる、カッコでグループ化されたすべての行を同じ量で再インデントします。このコマンドは巧妙なので、文字列内で開始される行は変更しません。CモードのときはCプリプロセッサー行は変更しませんが、それらにアタッチされた継続行は再インデントします。

コマンドM-x indent-code-rigidlyは、indent-rigidlyが行うように(インデントコマンドを参照してください)、リージョン内のすべての行を厳格(rigidly)にシフトします。このコマンドはリージョンが文字列内で開始される場合を除き、文字列内で開始される行のインデントは変更しません。プレフィクス引数は、インデントする列数です。