Не меняйте положение курсора при прокрутке в Emacs
Есть ли способ остановить Emacs
от автоматического перемещения моей позиции текстового курсора (иначе, точки) во время прокрутки? Я продолжаю терять свое местоположение и метки с этим раздражающим поведением.
Я проверил следующее предложение, но безуспешно:
(setq scroll-preserve-screen-position t
scroll-conservatively 0)
(Я бегу Emacs
24.2 в Ubuntu и OS X.)
4 ответа
Я думаю, что вы хотите, чтобы поведение курсора (точки) и видимой области было как в 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
) постоянно удерживать точку в центре видимой области.
Я не знаю, есть ли способ остановить перемещение вашей точки при прокрутке в emacs. Но если вы хотите сохранить свое местоположение, чтобы вернуться к нему позже, вы можете использовать кольцо меток.
То есть типа C-<SPC> C-<SPC>
протолкнуть текущее местоположение точки на кольцо меток, а затем набрать C-u C-<SPC>
установить точку на предыдущее место в кольце меток.
Я использую это:
;;; scrollers - M-f, M-b
(global-set-key "\M-f" "\C-u1\C-v")
(global-set-key "\M-b" "\C-u1\M-v")
Следующие работы для меня:
(custom-set-variables
'(scroll-conservatively 1000)
'(scroll-margin 3)
)