文や段落を操作するためのEmacsコマンドは、単語操作コマンドと同様に、主にMetaキーで入力します。
文頭に戻る (backward-sentence)。
文末 (forward-sentence) まで移動する。
文末まで前方一致で検索 (kill-sentence)。
文頭まで遡って削除する (backward-kill-sentence)。
コマンド M-a (backward-sentence) および M-e (forward-sentence)
は、それぞれ現在の文の先頭と末尾に移動します。これらのバインドは、行の先頭と末尾に移動する C-a および
C-e に似せて設定されました。これらとは異なり、M-a と
M-e は繰り返し使用された場合、連続する文をまたいで移動します。
文の後方に移動するとポインタは文の先頭文字の直前に配置され、前方に移動すると文を終わらせる句読点の直後に配置されます。いずれの場合も、文境界の空白部分はスキップされません。
C-a や C-e
に対応するキルコマンドがあるのと同様に、C-k にも対応するキルコマンドがあり、M-a や M-e にも同様のキルコマンドが存在します。M-k (kill-sentence)
は、指定した箇所から文末までをキルします。正の数値引数を指定すると n は次の n 文をキルし、負の引数 −n を指定すると、直前の
n 文の先頭まで遡ってキルします。
C-x DEL (backward-kill-sentence) は文頭まで遡ります。
文コマンドは、文末に2つのスペースを置くというアメリカのタイピストの慣習に従うことを前提としています。つまり、文は ‘.’、‘?’、または ‘!’ の後に改行または2つのスペースが続く箇所で終わり、その間には任意の数の ‘)’、‘]’、‘'’、または ‘"’ という文字を置くことができます。また、文は段落の開始または終了箇所で始まり、あるいは終わります。Emacsの文コマンドが、文を終わらせるピリオドと略語を示すピリオドを区別できるため、この慣習に従うことが有用です。
文間のスペースを1つだけにしたい場合は、変数 sentence-end-double-space を
nil
に設定することで、文コマンドが単一スペースで停止するようにできます。ただし、これには欠点があります。文を終わらせるピリオドと、略語を示すピリオドを区別する方法がないことです。そのため、便利で確実な編集を行うには、2スペースの慣習に従うことをおすすめします。変数
sentence-end-double-space はフィル処理にも影響します(明示的なフィルコマンドを参照してください)。
変数 sentence-end は、文末の判定方法を制御します。nil
以外の場合、その値は正規表現である必要があり、これを用いて文の末尾数文字と、文に続く空白文字を照合します(正規表現の構文を参照)。値がデフォルトの nil
である場合、Emacs は sentence-end-double-space
の値などのさまざまな基準に基づいて文末を判定します。
タイ語など、文末を示すのにピリオドを用いない言語があります。そのような場合は、変数 sentence-end-without-period を t に設定してください。
前述の文単位の移動コマンドは人間の言語に基づいていますが、他のEmacsモードでも同様の機能を実現するためにこれらのコマンドを設定できます(文単位の移動を参照)。