次: Narrowing, 前: Postscript Variables, 上: Top
Emacsには、バッファ中のテキストをソートするコマンドがいくつかあります。 すべてはリージョン(ポイントとマークのあいだのテキスト)に働きます。 これらのコマンドは、リージョン中のテキストを 多数のソートレコードにわけ、 各レコードについてソートキーを識別し、 一連のレコードをソートキーによって定まる順序に並べ替えます。 レコードはキーのアルファベット(辞書)順にも、 また数値に基づく数値順にも並べられます。 アルファベット順の場合は、ASCII文字の順序に基づいて すべての大文字「A」〜「Z」は小文字「a」よりまえにきます。
各種のソートコマンドの違いは、テキストをソートレコードに分ける方法と、 各レコードのどの部分をソートキーに使うかです。 ほとんどのコマンドは各行をソートレコードとして扱いますが、 段落やページをソートレコードとして扱うコマンドもあります。 ほとんどのソートコマンドは各ソートレコード全体を それ自身のソートキーとして扱いますが、 ソートレコードの一部分だけをソートキーとして扱うコマンドもあります。
どの欄をキーとしてソートするかは、
1を指定すれば第1欄、というように数引数で指定する。
負の値を指定したときは左からでなく右から欄を数える。
つまり、-1は最後の欄でソートする。
複数の行において欄の値が同一の場合、
バッファ上のもとの順序が保存される。
たとえば、バッファにつぎのような内容が入っていたとします。
On systems where clash detection (locking of files being edited) is implemented, Emacs also checks the first time you modify a buffer whether the file has changed on disk since it was last visited or saved. If it has, you are asked to confirm that you want to change the buffer.
バッファ全体にM-x sort-linesを適用すると、 つぎのようになります。
On systems where clash detection (locking of files being edited) is implemented, Emacs also checks the first time you modify a buffer saved. If it has, you are asked to confirm that you want to change the buffer. whether the file has changed on disk since it was last visited or
ここで、`O'は大文字なのですべての小文字よりまえにきます。 上記のかわりにC-u 2 M-x sort-fileldsを使ったとすると、 結果はつぎのようになります。
implemented, Emacs also checks the first time you modify a buffer saved. If it has, you are asked to confirm that you want to change the buffer. On systems where clash detection (locking of files being edited) is whether the file has changed on disk since it was last visited or
この例ではソートキーは、`Emacs'、`If'、`buffer'、 `systems'、`the'だったわけです。
M-x sort-columnsには少々説明が必要です。 文字位置の範囲を指定するには、ポイントを文字位置の一方に、 マークを他方の文字位置に置きます。 このため、ポイントやマークをソートしたい最初の行の先頭に 置くことができませんから、このコマンドでは変わった 「リージョン」の定義を用います。 ポイントがある行全体はリージョンに含まれ、 同様に、マークがある行全体もリージョンに含まれ、 この2つの行のあいだにある行はすべてリージョンに含まれるとみなすのです。
たとえば、ある表を10文字目から15文字目までの情報をもとにソートする場合、
表の最初の行の10文字目にマークを置き、
表の最後の行の15文字目にポイントを置き、
そしてsort-column
を実行します。
あるいは、マークを最初の行の15文字目、
ポイントを最後の行の10文字目に置いても同じことです。
これは、ポイントとマークで指定された矩形領域をソートするものと考えられます。 ただし、矩形領域の右側や左側にある各行のテキストも一緒に移動します。