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

6736
NVaughan

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

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

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

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

15

4 ответа на вопрос

8
artscan

Я думаю, что вы хотите, поведение курсора (точки) и видимой области должно быть, как в 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 (как в Mac, так и в Ubuntu): `Cu C-`не похоже на работу. Я не знаю, проблема ли это в «cua-mode» или что-то в этом роде. Я попытался запустить Emacs с параметром `-q`, но ничего не изменилось. Есть идеи? NVaughan 11 лет назад 1
7
Kirill

I don't know if there is a way to stop emacs from moving your point when scrolling. But if you would like to save your location to return to it later, you can use the mark ring.

That is, type C-<SPC> C-<SPC> to push the current point location onto the mark ring, then later type C-u C-<SPC> to set point to the previous location in the mark ring.

3
Sergey

I use this:

;;; scrollers - M-f, M-b (global-set-key "\M-f" "\C-u1\C-v") (global-set-key "\M-b" "\C-u1\M-v") 
0
one of Japanese Emacs user

Следующие работы для меня:

(custom-set-variables '(scroll-conservatively 1000) '(scroll-margin 3) ) 

Похожие вопросы