Emacs におけるスクロールの挙動とその設定
Emacs ではデフォルトのままだとスクロールする時、ガクガクと動く感じがします。 その調整も含めて、今回は Emacs でのスクロールの挙動とその変更方法について説明します。
カーソル移動によるスクロール
なぜ、ガクガクとスクロールする感じになるかというと、 Emacs では画面端になって、スクロールする際に、 画面中央にカーソルがくるようにするためです。これはこれで、なるべく画面の中央で編集ができるため、良い点もあります。 ただ、 Word など他のアプリと挙動が違うので、ちょっと気持ち悪く感じます。
ステップ量
中央に移動する挙動を変えるには scroll-conservatively の値を変更します。この値のデフォルトは 0 であり、これを 1 にすると、 スクロールは 1 行となり、自然な感じになります。
(setq scroll-conservatively 1)ちなみに、scroll-step の変数でも同じように変わりますが、 scroll-conservatively の方が新しく用意されたもので、大きな値などにも対応しており、よりよいです。
マージン
一行ずつスクロールするようになると、書き続けるうちに画面の下の方ばかりで編集することになることがあります。 見づらいですが、そういうものといえばそういうものですし、 C-l で中央にカーソルを持ってくることもできます。ただ、 Emacs にはスクロールのマージンを指定する機能もあり、 これを設定すると画面の端に到達する前に画面をスクロールできるようになります。
(setq scroll-margin 5)
1 画面のスクロール
1 画面のスクロールというのは C-v、 M-v によるページダウン、ページアップのことです。重複行数
ページをスクロールする際、移動をわかりやすくするため、ちょっと重複するようになっています。 特にターミナルで動作させている時など、この重複は大事です。この値は next-screen-context-lines で設定し、デフォルトは 2 です。
(setq next-screen-context-lines 5)
カーソル位置の保持
scroll-preserve-screen-position の変数に t を設定すると ページスクロール時に画面上におけるカーソルの位置をなるべく変えないようにします。(setq scroll-preserve-screen-position t)
他のアプリなどでは保持することが多いので、 どちらかというと設定しておいた方が自然かなという気がします。
マウスホイール
最近では Emacs でもデフォルトでマウスのホイールによるスクロールができるようになっています。ただ、他のアプリではホイールでスクロールするとカーソルは移動せずにスクロールするものですが、 Emacs のスクロールはカーソルありきの移動です。 どちらが良い悪いとも言えませんが、同じような感じにすることはできません。 そのかわりといっては何ですが、 Emacs ではターミナルでさえ、ホイールスクロールが使えるようになっています。
ホイールスクロールに関しては、設定する必要はあまりありませんが、 Emacs では Shift や Ctrl を押しながら、 ホイールした時のスクロール量の調整などもできるようになっています。
;; マウスホイールによるスクロール時の行数 ;; Shift 少なめ、 Ctrl 多めに移動 (setq mouse-wheel-scroll-amount '(5 ; 通常 (デフォルト 5) ((shift) . 1) ; Shift (デフォルト 1) ((control) . 40) ; Ctrl (デフォルト nil = 無効) ))
設定用コード
init.el ファイルの記述用に設定をまとめてみました。;; スクロールした際のカーソルの移動行数 (setq scroll-conservatively 1) ;; スクロール開始のマージンの行数 (setq scroll-margin 10) ;; 1 画面スクロール時に重複させる行数 (setq next-screen-context-lines 10) ;; 1 画面スクロール時にカーソルの画面上の位置をなるべく変えない (setq scroll-preserve-screen-position t) ;; マウスホイールによるスクロール時の行数 ;; Shift 少なめ、 Ctrl 多めに移動 (setq mouse-wheel-scroll-amount '(5 ; 通常 ((shift) . 1) ; Shift ((control) . 40) ; Ctrl ))
Facebook コメント
コメント