15

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

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

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

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

4 ответа4

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .