Emacsでスクロールするときにカーソルの位置を変更しない

Emacsでスクロールするときにカーソルの位置を変更しない

Emacsスクロール中にテキスト カーソルの位置 (つまりポイント) が自動的に移動しないようにする方法はありますか? この迷惑な動作により、自分の位置とマークが失われ続けます。

次の提案をテストしましたが、成功しませんでした。

(setq scroll-preserve-screen-position t
scroll-conservatively 0)

(私はEmacsUbuntu と OS X で 24.2 を実行しています。)

答え1

notepadカーソル (ポイント) と可視領域の動作は、、、その他の最新のエディターのようになるべきだと思いますgedit。つまり、ポイントの位置とは関係なく可視領域を変更し、ポイントを移動した後すぐに可視領域をポイントの位置に戻す機能です。ただし、emacs別の概念があります。可視領域は常にポイントの位置に従い、その逆も同様です。

参照https://stackoverflow.com/questions/9616623/ctrl-up-down-style-scrolling-in-emacs

前の回答では、特殊なイディオムが示されています。表示領域 (ポイントを含む) を現在の位置から遠くに移動してから、ポイントを正確に前の位置に戻したい場合は、 を使用する習慣を身に付ける必要があります。現在の作業位置にmark-ring戻る方法は常にあります。、などの多くのコマンドは、以前の位置を に自動的に保存するため、 before は使用せず、戻る場合にのみ使用してください。やなどのスクロール コマンドは、過剰なマークが生成される可能性があるため、デフォルトでは以前の位置を自動的に保存しません。mark ringisearch-forwardbeginning-of-bufferace-jump-modemark ringC-<SPC> C-<SPC>C-u C-<SPC>scroll-upmwheel-scroll

いくつかの場所では、バッファを独立して操作するためにコマンドclone-indirect-bufferまたはコマンドを使用できます。また、コマンド( ) を使用して、ポイントを可視領域の中央に継続的に保持します。view-buffer-other-windowrecenter-top-bottomC-l

答え2

スクロール中にemacsがポイントを移動しないようにする方法があるかどうかはわかりません。しかし、後で戻るために場所を保存したい場合は、マークリング

つまり、 と入力してC-<SPC> C-<SPC>現在のポイント位置をマーク リングにプッシュし、その後 と入力してC-u C-<SPC>ポイントをマーク リング内の前の位置に設定する必要があります。

答え3

私はこれを使用します:

;;; scrollers - M-f, M-b
(global-set-key "\M-f" "\C-u1\C-v")
(global-set-key "\M-b" "\C-u1\M-v")

答え4

私の場合は次の方法が使えます:

(custom-set-variables
 '(scroll-conservatively 1000)
 '(scroll-margin 3)
 )

関連情報