Next: , Up: Display


9.1 スクロール

バッファを表示しているウィンドウに全部を表示するには 大きすぎるテキストが入っているバッファでは、 Emacsはテキストの連続する一部分を表示します。 表示する部分にはつねにポイントが入っています。

スクロール(scroll)とは、 ウィンドウ内でテキストを上下に動かして、 テキストの異なる部分を表示することです。 前向きのスクロールでは、テキストを上へ移動して、 新たなテキストがウィンドウの最下端から現れます。 後向きのスクロールでは、テキストを下に移動して、 新たなテキストがウィンドウの最上端から現れます。

ポイントをウィンドウの下端や上端を超えて移動すると、 自動的にスクロールします。 本節で紹介するコマンドを使って、明示的にスクロールすることもできます。

C-l
画面をクリアして再表示し、選択されたウィンドウではポイントが 縦方向の中央に位置するようにスクロールする (recenter
C-v
(ウィンドウ1面分か指定した行数だけ)前向きにスクロールする (scroll-up)。
<NEXT>
同様に前向きにスクロールする。
M-v
後向きにスクロールする(scroll-down)。
<PRIOR>
同じく後向きにスクロールする。
arg C-l
ポイントがarg行目にくるようにスクロールする(recenter)。
C-M-l
有益な情報が画面上にくるように発見的方法でスクロールする (reposition-window)。

もっとも基本的なスクロールコマンドは、 引数を指定しないC-lrecenter)です。 このコマンドは、画面全体をクリアして、すべてのウィンドウを再表示します。 さらに、ポイントがウィンドウの中央の行に位置するように、 選択されているウィンドウをスクロールします。

スクロールコマンドC-vM-vは、 ウィンドウ内の全テキストを上下に何行か移動します。 C-vscroll-up)に引数を指定すると、 C-lと同じようにテキストとポイントを一緒に上へ移動して、 追加分(引数分)の行をウィンドウの下部に表示します。 C-vに負の引数を指定した場合は、 ウィンドウの上端に追加分の行を表示します。 M-vscroll-down)はC-vに似ていますが、 スクロール方向が逆です。 ファンクションキーの<NEXT>と<PRIOR>は、 C-vM-vに等価です。

スクロールコマンドの名前は、 ウィンドウ内でテキストを動かす向きに基づいています。 したがって、前向きにスクロールするコマンドは、 画面上ではテキストを上へ移動するため、 scroll-upと呼ばれます。

一度にウィンドウ1面分のバッファを読んでいくには、 引数を指定せずにC-vを使います。 ウィンドウの下端2行を上端に持っていき、 それに続けてこれまで表示されていなかったほぼ ウィンドウ1面分の行を表示します。 ポイントがウィンドウの上端より上に出てしまう場合には、 ポイントはウィンドウの新たな上端の行に移動します。 引数を指定しないM-vも同様に、 テキストを重複させながら、後向きに移動します。 C-vM-vで重複させる行数は、 変数next-screen-context-linesで制御します。 デフォルトでは2です。

画面上でのポイント位置を保ったまま 1画面分のスクロールを行うコマンドを好むユーザーもいます。 このようにするには、変数scroll-preserve-screen-positionnil以外を設定します。 このモードは、 1画面分ずつスクロールしながらファイルを閲覧するような場合に便利です。 スクロールを始めた画面に戻ると、ポイントは開始時の行位置に戻ります。 しかし、つぎの画面に移動して、 そこに表示されているテキストにポイントを 移動するような使い方にはむいていません。

スクロールのもう1つの方法は、数引数を指定したC-lを使うことです。 引数を指定すると、C-lは画面をクリアしません。 選択されているウィンドウだけをスクロールします。 正の引数nを指定すると、 ポイント位置が上端からn行目にくるように、 テキストの位置を変更します。 引数として0を指定すると、ポイント位置は最上端の行になります。 ポイントがテキストに対して動くわけではなくて、 テキストとポイントは一緒に画面上を動きます。 C-lに負の引数を指定すると、 ポイントはウィンドウの下端から指定行数にきます。 たとえば、C-u - 1 C-lとするとポイントは最下行になり、 C-u - 5 C-lとすれば下から5行目にポイントがきます。 C-u C-lのようにC-uだけを引数に指定すると、 ポイントが画面中央にくるようにスクロールします。

C-M-lコマンド(reposition-window)は、 有益な情報を画面上に持ってくるようにように設計された発見的手法で、 カレントウィンドウをスクロールします。 たとえば、Lispファイルでは、このコマンドは、 可能であれば現在の関数定義(defun)全体を画面上にもってこようとします。

表示の際、ポイントがテキストの表示部分から飛び出してしまうと、 自動的にスクロールします。 通常、この自動スクロールでは、 ポイントがウィンドウ縦方向の中央に位置するように画面を移動します。 しかし、scroll-conservativelyに小さな数nを設定しておくと、 ポイントが画面から少しだけ(n行未満)はみだすと、 Emacsはポイントを画面内に戻すのに必要な分だけスクロールします。 デフォルトでは、scroll-conservativelyは0です。

変数scroll-marginは、 ポイントをウィンドウの上端や下端にどれだけ近づけられるかを制限します。 その値は画面上での行数です。 ポイントがウィンドウの上端や下端からその行数以内にくると、 Emacsはウィンドウを中央に位置付けし直します。 デフォルトでは、scroll-marginは0です。