水平スクロールとは、ウィンドウ内のすべての行を左右にずらすことで、左マージン付近のテキストの一部が表示されないようにすることを指します。ウィンドウ内のテキストを水平方向にスクロールすると、テキスト行は継続されるのではなく切り捨てられます(行の切り捨てを参照)。ウィンドウ内で行が切り捨てられている場合、ポイントが画面の左端または右端を越えるたびに、Emacsは自動的に水平スクロールを行います。デフォルトでは、ウィンドウ内のすべての行がまとめて水平方向にスクロールされますが、変数
auto-hscroll-mode に特殊な値 current-line
を設定すると、カーソルが表示されている行のみがスクロールされます。自動水平スクロールを完全に無効にするには、変数 auto-hscroll-mode に nil
を設定してください。なお、自動水平スクロールが無効な状態でポイントが画面端を越えると、それを示すためにカーソルが消えます。(テキスト端末では、代わりにカーソルが端に残ります。)
変数 hscroll-margin
は、自動スクロールが発生する前に、ポイントがウィンドウの左右の端にどれだけ近づけるかを制御します。単位は列です。例えば、値が 5
の場合、ポイントを端から 5 列以内に移動させると、その端から離れる方向に水平スクロールが行われます。
変数 hscroll-step
は、ポイントが端に近づきすぎた際にウィンドウを何列分スクロールさせるかを決定します。デフォルト値である 0
は、ポイントをウィンドウ内の水平方向に中央配置することを意味します。正の整数値は、スクロールする列数を指定します。浮動小数点数(値は 0 から 1
の間である必要があります)は、ウィンドウ幅に対するスクロール量の割合を指定します。
また、以下のコマンドで明示的な水平スクロールを行うこともできます。
現在のウィンドウ内のテキストを左にスクロールする (scroll-left)。
右にスクロールしてください (scroll-right)。
C-x < (scroll-left)
は、選択中のウィンドウ内のテキストを、ウィンドウ幅から2列分を引いた分だけ左にスクロールします。(言い換えれば、ウィンドウ内のテキストがウィンドウに対して左に移動します。)数値引数
n を指定すると、n 列分スクロールします。
テキストが左方向にスクロールされており、ポイントがウィンドウの左端から外れた場合、ポイントがテキストの表示領域に戻るまで、カーソルはウィンドウの左端で停止します。これは
auto-hscroll-mode
の現在の設定とは無関係であり、左方向にスクロールされたテキストの場合、この設定はウィンドウの右端における挙動にのみ影響します。
C-x > (scroll-right)
も同様に右方向へスクロールします。ウィンドウが正常に表示された後は、各行がウィンドウの左端から始まるため、これ以上右へスクロールすることはできず、そうしようとしても効果はありません。つまり、C-x > の引数を正確に計算する必要はなく、十分に大きな引数であれば通常の表示に戻ります。
これらのコマンドを使用してウィンドウを水平方向にスクロールすると、自動水平スクロールの下限が設定されます。自動スクロールは引き続きウィンドウをスクロールしますが、以前に
scroll-left で設定した量を超えて右へスクロールすることはありません。auto-hscroll-mode に current-line
を設定すると、カーソルが表示されている行以外のすべての行が、その最小量だけスクロールされます。
グラフィカルディスプレイでは、オプションの horizontal-scroll-bar-mode
を有効にすると、水平スクロールバーを使用してウィンドウを水平方向にスクロールできます。スクロールバーを参照してください。