Не змінюйте позицію курсора під час прокручування в Emacs


15

Чи є спосіб зупинитися Emacs від автоматичного переміщення мого положення курсору тексту (він же, пункт), коли я прокручуюся? Я продовжую втрачати своє місце розташування і відзначає цю дратівливу поведінку.

Я протестував наступну пропозицію, не маючи успіху:

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

(Я біжу Emacs 24.2 на Ubuntu і на OS X.)

Відповіді:


8

Я думаю, що ви хочете, щоб поведінка курсору (точки) і видимої області були схожими на notepad, gedit, інші сучасні редактори: здатність змінювати видиму область незалежно від позиції точки і негайно повертати видиму область в точкове положення після переміщення точки. Але emacs має іншу концепцію: видима область завжди слідує за точкою позиції і навпаки.

Дивіться також https://stackoverflow.com/questions/9616623/ctrl-up-down-style-scrolling-in-emacs

Попередня відповідь показує особливий ідіом: якщо ви хочете перемістити видиму область (разом з точкою) далеко від поточної позиції, а потім повернути точку в точці попередньої позиції, яку ви повинні мати звич mark-ring. Завжди є шлях mark ring до поточної робочої позиції: багато команд, наприклад isearch-forward, beginning-of-buffer, ace-jump-mode автоматично зберігати попередню позицію в mark ring і ви не повинні використовувати C-<SPC> C-<SPC> раніше, але тільки C-u C-<SPC> для стрибків назад. Команди прокрутки, наприклад scroll-up або mwheel-scroll, автоматично не зберігати попередню позицію за умовчанням, оскільки це може призвести до надмірної кількості надлишкових міток.

Можна використовувати команди clone-indirect-buffer або view-buffer-other-window для самостійної роботи з буфером в декількох місцях. І використовуйте команду recenter-top-bottom ( C-l ) постійно утримувати точку в центрі видимої області.


1
Дякую. Цікава відповідь. Існує проблема з моїми Emacs, хоча (як у Mac, так і в Ubuntu): C-u C-<SPC> здається, не працює. Я не знаю, чи це проблема cua-mode або щось. Я спробував запустити Emacs -q опція, але нічого не змінилося. Будь-які ідеї?
NVaughan

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")

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.