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


18

Emacsスクロール中にテキストカーソルの位置(別名、ポイント)を自動的に移動しないようにする方法はありますか?私は自分の場所を失い続け、この迷惑な行動を示しています。

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

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

EmacsUbuntuおよびOS Xで24.2を実行しています。)

回答:


11

私はあなたがのようにあるべきカーソル(ポイント)と可視領域の振る舞いをしたいと思いますnotepadgedit能力ポイントの位置とは無関係に表示領域を変更し、すぐにポイントを移動した後のポイントの位置に表示領域を返すために:、他人現代の編集者は。しかしemacs、別の概念があります。可視領域は常にポイント位置に従い、逆も同様です。

/programming/9616623/ctrl-up-down-style-scrolling-in-emacsも参照してください

前の回答ショー特別なイディオム:あなたは遠い現在位置から(一緒にポイント付き)表示領域を移動するために、次に使用する習慣を持っている必要があり、正確に前の位置にポイントを返したい場合mark-ring。いつもの方法は、そこを通っているmark ring多くのコマンドなど:現在の作業位置へisearch-forwardbeginning-of-bufferace-jump-mode自動的にの前の位置保存mark ringし、使用してはならないC-<SPC> C-<SPC>だけで、前にC-u C-<SPC>ジャンプバックのために。scroll-upまたはなどのスクロールコマンドmwheel-scroll過剰なマークを大量に生成する可能性があるため、デフォルトでは前の位置を自動的に保存しません。

いくつかの場所でコマンドを使用するclone-indirect-bufferview-buffer-other-window、バッファーを使用して独立した作業を行うことができます。コマンドrecenter-top-bottomC-l)を使用して、可視領域の中心にポイントを継続的に保持します。


2
ありがとう。興味深い答え。私のEmacsには問題があるようです(MacとUbuntuの両方):C-u C-<SPC>動作していないようです。それが問題なのcua-modeか何かわからない。-qオプション付きでEmacsを実行しようとしましたが、何も変わりませんでした。何か案は?
-NVaughan

それはあまりにも悪いです...私はを使用してhighlight-symbol-modeいるので、これは非常に迷惑です。カーソルを1つの変数に設定すると、すべての発生が強調表示されます。スクロールを開始すると、カーソルが変数から離れ、すべてのハイライトが失われます。Emacsは、少なくともスクロールに関する他の現代的なエディターのように振る舞うなら、はるかに優れているでしょう。
itmuckel

7

スクロール時に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")

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.