Не меняйте положение курсора при прокрутке в Emacs

18

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

Я проверил следующее предложение, но безуспешно:

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

(Я использую Emacs24.2 в Ubuntu и OS X.)

NVaughan
источник

Ответы:

11

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

Смотрите также /programming/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), чтобы постоянно удерживать точку в центре видимой области.

artscan
источник
2
Благодарю. Интересный ответ. Похоже, что проблема с моим Emacs (как в Mac, так и в Ubuntu): C-u C-<SPC>похоже, не работает. Я не знаю, проблема ли это cua-modeили что-то. Я попытался запустить Emacs с -qопцией, но ничего не изменилось. Есть идеи?
NVaughan
Это очень плохо ... Я нахожу это супер раздражающим, потому что я использую highlight-symbol-mode. Я установил курсор на одну переменную, и он выделяет все случаи. Когда я начинаю прокручивать курсор, курсор покидает переменную и все блики теряются. 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")
Сергей
источник
0

У меня работает следующее:

(custom-set-variables
 '(scroll-conservatively 1000)
 '(scroll-margin 3)
 )
один из японских пользователей Emacs
источник