Subsections

5.4 領域の利用

任意の範囲のテキストを切ったり貼ったりするには,領域 (region) を使います。

5.4.1 領域指定とテキストの移動

  1. undo 操作を繰り返し行って,これまでに変更した *scratch* バッファ の内容を,すべて元の状態に戻してみてください。操作の途中で混乱し てしまって元の状態に戻せなくなったら,一度Emacs を終了して, emacs & で再度起動してから,どれかキーを一つ押してください。

  2. 1 行目の ``This'' の直後 (``buffer'' の直前) の 空白位置にカーソルを移動してから C-<SPACE> を押し,ウィンドウ下部 のエコー領域に Mark set と表示されるのを確認してださい。この操作 を「マークを設定する」といいます。

  3. カーソルを,1 行目の ``buffer'' の直後 (``is'' の直前) の空白位置に移動してください。

  4. C-w を押してください。 `` buffer'' が消去されます。

  5. カーソルを下の方に動かして,何も書いてない行の先頭に移動してくだ さい。続いて C-y を押してください。 消去した `` buffer'' がカーソル位置に取り出されます。

2. と 3. で行った操作を,領域(リージョン) の指定といいます。領域とは,「最後にマークを設定した文字」から,「現在カー ソルがある位置の直前の文字」までの範囲のことです。先の操作では, `` buffer'' を領域指定しました。buffer の前の空白文字も領域に含ま れていることに注意してください20

「ポイント」という概念を使うと,領域の定義はもっとすっきりします。

ポイントは,カーソルがのっている文字と,その直前の文字との間に存在する 仮想的な点であって,実際に表示されるものではありません。四角いカー ソルの左下の角がポイントだと思ってもいいでしょう。カーソルを移動すれば, それにつれてポイントも移動します。

マークは C-<SPACE> を押したときのポイントに対して設定されます。 マークを設定したポイントと,現在のポイントとの間が領域です。

C-w21 は,指定した領域内の文字を消去するコマ ンドです。C-k と同様に,C-w で消去したものは kill-ring に保存されま すので,C-y を使って取り出せます。

上の操作では,`` buffer'' を領域指定しましたので,これが C-w で 消去され,C-y で取り出されました。この操作を用いると,任意のテキストを 任意の場所に移動することができます。

5.4.2 テキストの複写

M-w22 は,領域内のテキストを kill-ring に保 存するためのコマンドです。C-w とは違い,領域内のテキストは消去されませ ん。C-y と併用すれば,領域内のテキストを他の場所に複写することができま す。
  1. 2 行目の行頭 (;; If you want ... の ; の位置) にカーソルを移動 して,マークを設定してください。

  2. 行末の改行文字23 を含む 2 行目全体を領域指定してください。マー ク位置から現在のカーソル位置の直前までが領域ですから,カーソルを 次の行( 3 行目)の行頭に移動すればいいです。

  3. M-w を押してください。 カーソルがマーク位置に移動して,また戻ってきます。見た目には,そ れ以外の変化はありません。

  4. カーソルを下の方にある空白行まで移動して,C-y を押しましょう。 領域指定した内容 (2 行目全体) が複写されました。