フィルプレフィックス機能を使うと、各行が特殊な文字列(スペースの連続など)で始まるように段落を埋めることができます(これにより、インデントされた段落になります)。フィルプレフィックスを明示的に指定することもできますし、そうでない場合はEmacsが自動的に推論しようとします(適応的フィルを参照してください)。
フィルプレフィックス (set-fill-prefix) を設定します。
現在のフィルプレフィックス (fill-paragraph) を使用して段落を埋めます。
インデントの変更をそれぞれ新しい段落の開始とみなして、領域を埋めてください。
段落区切り行のみを新しい段落の開始とみなして、領域を塗りつぶしてください。
現在のバッファにフィルプレフィックスを指定するには、目的のプレフィックスで始まる行に移動し、ポイントをプレフィックスの末尾に置いて C-x . (set-fill-prefix)
と入力します。(C-x の後のピリオドのことです。)フィルプレフィックスを無効にするには、C-u C-x .
と入力するか、空のプレフィックスを指定します。具体的には、ポイントを行頭に置いた状態で C-x . と入力します。
フィルプレフィックスが有効な場合、フィルコマンドはフィル処理を行う前に段落の各行からフィルプレフィックスを削除し、フィル処理後に各行にそれを挿入します。(段落の1行目の先頭は、意図的に異なる設定にされることが多いため、そのまま保持されます。)オートフィルモードでも、改行時にフィルプレフィックスが自動的に挿入されます(オートフィルモードを参照)。C-oコマンドを行頭で使用すると、新たに作成される行にフィルプレフィックスが挿入されます(空行を参照)。逆に、M-^コマンドは、削除した改行の後にあるプレフィックス(存在する場合)を削除します(インデントを参照)。
例えば、fill-column が 40 で、フィルプレフィックスを ‘;; ’ に設定した場合、続くテキスト内の M-q
;; This is an ;; example of a paragraph ;; inside a Lisp-style comment.
以下を生成します:
;; This is an example of a paragraph ;; inside a Lisp-style comment.
fillプレフィックスで始まらない行は、M-qおよび段落コマンドの両方において、段落の開始とみなされます。これにより、ぶら下げインデント(最初の行以外はすべてインデントされている状態)の段落において良好な結果が得られます。プレフィックスを除去した後に空行であるか、あるいは1回インデントされている行も、段落を区切ったり開始したりします。これは、各行にコメント区切り文字を記述して複数段落のコメントを書く場合に望ましい動作です。
M-x fill-individual-paragraphs を使用すると、各段落のフィルプレフィックスを自動的に設定できます。このコマンドは、インデント量の変化をすべて新しい段落の開始とみなして領域を段落に分割し、それぞれの段落をフィルします。これにより、1つの段落内のすべての行が同じインデント量になります。そのインデントが、その段落のフィルプレフィックスとして機能します。
M-x fill-nonuniform-paragraphs
は、異なる方法で領域を段落に分割する同様のコマンドです。これは、段落区切り行(paragraph-separate
で定義されるもの)のみを新しい段落の開始として扱います。これにより、一つの段落内の行によってインデント量が異なる場合があるため、使用されるフィルプレフィックスは、その段落内のどの行よりも小さいインデント量となります。この方式は、段落の1行目を他の行よりも多く、あるいは少なくインデントするスタイルにおいて良好な結果をもたらします。
フィルプレフィックスは変数 fill-prefix
に格納されます。その値は文字列であり、フィルプレフィックスがない場合は nil
となります。これはバッファごとの変数であり、変数を変更しても影響を受けるのは現在のバッファのみですが、変更可能なデフォルト値も用意されています。ローカル変数を参照してください。
indentation
テキストプロパティを使用すると、段落のインデント量を別の方法で制御できます。リッチテキストにおけるインデントを参照してください。