[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
本章では、字下げ(indentation)を 付加/削除/調整するEmacsコマンドについて説明します。
newline-and-indent
)。delete-indentation
)。 C-jの効果を取り消す。split-line
)。back-to-indentation
)。indent-region
)。indent-rigidly
)。tab-to-tab-stop
)。ほとんどのプログラム言語には、字下げの慣習があります。 Lispコードでは、括弧の入れ子の深さに従って行を字下げします。 細部はかなり異なりますが、概念的にはCコードでも同様の考え方で字下げします。
どんな言語であっても、行を字下げするにはTABコマンドを使います。 各メジャーモードでは、特定の言語に適した字下げを行うように、 このコマンドを定義します。 Lispモードでは、TABは括弧の深さに応じて行を整列します。 行のどこでTABを打鍵しても、その行全体を整列します。 Cモードでは、TABは、 Cの構文上のさまざまな側面を考慮した巧みで洗練された 字下げスタイルを実現しています。
テキスト(text)モードでは、 TABはtab-to-tab-stop
コマンドを実行します。 これは、つぎのタブストップ位置まで字下げを行います。 タブストップ位置はM-x edit-tab-stopsで設定できます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
行の字下げを飛び越えるには、M-m(back-to-indentation
)を使います。 行のどこで実行しても、その行の空白でない最初の文字位置にポイントを移動します。
現在行のまえに字下げした行を挿入するには、 C-a C-o TABを使います。 現在行のあとに字下げした行を挿入するには、C-e C-jを使います。
単にタブ文字を挿入するには、C-q TABと打ちます。
C-M-o(split-line
)は、 ポイントから行末までのテキストを垂直に下ろします。 その結果、現在行は2つの行に分割されます。 C-M-oは、まず、ポイントの直後に空白やタブがある限りポイントを進めます。 そして、ポイントの直後に、 改行とポイント位置の桁までに必要な字下げを挿入します。 ポイント自身は挿入した改行の直前に留まります。 この点では、C-M-oはC-oに似ています。
2つの行を連結するには、 コマンドM-^(delete-indentation
)を使います。 このコマンドは、現在行の行頭の字下げと行区切り(改行文字)を 削除して空白1個に置き換えます。 ただし、この空白1個を省いてしまう(Lispコードには便利な)特別な場合があります。 2つの行を繋げた結果、開き括弧や閉じ括弧が連続する場合、 あるいは、さらに改行が続く場合です。 現在行の字下げだけを削除するには、 行頭に移動してからM-\(delete-horizontal-space
)を使います。 このコマンドは、カーソル(ポイント)の周りの空白とタブをすべて削除します。
詰め込み接頭辞がある場合、M-^は、 削除される改行の直後に現れる詰め込み接頭辞を削除します。 See 節 19.5.3 詰め込み接頭辞。
一度に複数の行の字下げを変更するコマンドもあります。 C-M-\(indent-region
)は、 リージョン内で始まるすべての行に作用します。 このコマンドは、行頭でTABを打鍵したかのように 『普通の』方法で各行を字下げします。 数引数は字下げする桁位置を指定します。 つまり、最初の空白でない文字がその桁位置にくるように 行全体を右か左に水平移動します。 C-x TAB(indent-rigidly
)は、 リージョン内のすべての行を、 引数で指定した分だけ右に移動します(引数が負であれば左に移動)。 複数の行全部をきちっと揃えて(rigidly)横に移動することから、 コマンドにはこのような名前が付いています。
M-x indent-relativeは、先行する行(実際には空行でないいちばん近くの行)に 基づいてポイント位置を字下げします。 ポイント位置に空白を挿入してポイントを進めて、 ポイントが先行する行の字下げ位置の真下にくるようにします。 字下げ位置とは連続した白文字の末尾か行末のことです。 ポイントが先行する行のどの字下げ位置よりも右にある場合には、 ポイントのまえの白文字を削除してから、 先行する行の適用可能な最初の字下げ位置まで字下げします。 適用可能な字下げ位置がない場合には、 indent-relative
はtab-to-tab-stop
を実行します (see 節 18.2 タブストップ)。
字下げテキスト(indented text)モードでは、 TABはindent-relative
と定義されます。 See 節 19. 自然言語用のコマンド。
テキストの一部を字下げする別の方法についてはSee 節 19.11.6 整形済みテキストの字下げ。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
表を入力するには、テキスト(textモード)におけるTABの定義、 tab-to-tab-stop
を利用できます。 このコマンドは、ポイントがつぎのタブストップ位置に達するまで ポイントのまえに字下げを挿入します。 テキスト(text)モードでなくても、M-iでこのコマンドを実行できます。
M-iが使用するタブストップは任意に設定できます。 この設定は、昇順に並べた桁番号のリストとして tab-stop-list
と呼ばれる変数に格納されます。
タブストップを設定する便利な方法は、 M-x edit-tab-stopsを使うことです。 このコマンドは、タブストップの設定を記述したバッファを作成して選択します。 このバッファを編集して今までとは異なるタブストップを指定し、 C-c C-cと打ってその新たな設定を有効にします。 edit-tab-stops
は、呼ばれたときのカレントバッファをあらかじめ 記録しておくので、そのバッファに新たなタブストップを設定します。 通常、全バッファで同じタブストップを共有しているので、 1つのバッファでタブストップを変更すると、すべてのバッファに影響をします。 しかし、あるバッファでtab-stop-list
をローカルにしておくと、 そのバッファでedit-tab-stops
を実行するとローカルな設定を編集します。
一般的に使われる8桁ごとに設定されたタブストップの場合、 設定用バッファの内容はつぎのようになります。
: : : : : : 0 1 2 3 4 5678 To install changes, type C-c C-c |
1行目は、各タブストップ位置をコロンで表します。 残りの行は、タブストップ位置を読み取りやすくためや使い方です。
tab-to-tab-stop
を制御するタブストップと、 バッファ内でのタブ文字の表示とは、関係がないことに注意してください。 詳細についてはSee 節 9.7 表示を制御する変数。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
Emacsでは、通常、行の字下げにはタブと空白の両方を使用します。 しかし、空白だけを用いて字下げを行うことも可能です。 そうするには、変数indent-tabs-mode
にnil
を設定します。 この変数はバッファごとの変数です。 変数を変更してもカレントバッファだけに影響しますが、 デフォルト値を変更することもできます。 See 節 28.2.4 ローカル変数。
空白以外のテキストの桁を保存したまま、タブを空白(あるいはその逆)に 変換するコマンドもあります。 M-x tabifyは、リージョン内の連続する空白を探して、 字下げを変えることがなければ少なくとも連続する3個の空白をタブに変換します。 M-x untabifyは、リージョン内のすべてのタブを 適切な個数の空白に変換します。
[ << ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |