Полосы прокрутки Emacs с точным позиционированием

Как я могу получить полосы прокрутки с точным позиционированием?

Чтобы проиллюстрировать, что я имею в виду:

  1. C-h C-f (прочитайте FAQ по GNU Emacs)

  2. Теперь попробуйте расположить содержимое буфера так, чтобы абзац, начинающийся с This is the version ..., был сверху. С полосой прокрутки по умолчанию вам потребуется несколько перерисовок, чтобы сделать это. Или вы щелкаете левой кнопкой мыши для позиционирования курсора, а затем C-lC-l

  3. Теперь вернитесь туда, где вы были раньше. Это невозможно с обычными полосами прокрутки.

Я хотел бы просто щелкнуть полосу прокрутки на высоте This is the version ..., чтобы расположить эту строку сверху для шага 2. И чтобы вернуться туда, откуда я пришел, я щелкаю правой кнопкой мыши (действительно не перемещая мышь).

Раньше я всегда устанавливал Emacs с виджетами, подобными Athena, чтобы получить такие полосы прокрутки, см. их описание. Но мне интересно, есть ли сейчас лучший или более современный способ сделать это. В конце концов, я бы предпочел использовать стандартные дистрибутивы.

Может быть, даже не нужно менять полосы прокрутки, а использовать для этого левый край. В конце концов, щелчок мышью по краю распознается как <left-fringe>

M-x emacs-version
GNU Emacs 23.3.1 (x86_64-pc-linux-gnu, GTK+ Version 2.24.10) от 21 сентября 2012 г. на batsu, модифицированный Debian


person false    schedule 10.01.2013    source источник
comment
Исходный код Emacs включает собственную версию полос прокрутки, которые работают примерно так же, как Athena, но используются только в том случае, если Emacs скомпилирован без поддержки инструментария. OTOH, не должно быть слишком сложно изменить код, чтобы мы поддерживали как инструментальные, так и неинструментальные полосы прокрутки и выбирали между ними во время выполнения. Я был бы очень рад принять такой патч.   -  person Stefan    schedule 11.01.2013
comment
@Stefan: вы правы, опция настройки дает полосы прокрутки, подобные Athena. Но на самом деле левая и правая мышь в Athena очень просты, никакого перетаскивания и тому подобного, только клавиша вниз/ButtonPress ; по этой причине я все больше и больше предпочитаю оставлять полосы прокрутки такими, какие они есть, и предпочитаю перегружать бахрому. Это дает меньше сюрпризов.   -  person false    schedule 11.01.2013


Ответы (2)


Может быть, изменение привычек использования могло бы помочь? Некоторые пользователи Emacs рекомендуют полностью отключить полосы прокрутки и управлять Emacs исключительно с помощью клавиатуры. (Эта привычка полезна и при использовании Emacs внутри оболочки.)

Emacs предоставляет большое количество быстрых клавиш навигации< /а>. Например, для перемещения вверх и вниз по большому объему буферного пространства у вас есть:

C-v scroll-up

M-v scroll-down

М- forward-paragraph

М-{ backward-paragaph

C-x] forward-page

C-x [ backward-page

Однако я бы сказал, что на сегодняшний день наиболее полезными навигационными командами являются:

C-s isearch-forward

C-r isearch-backward

В Emacs поиск настолько дешев, что он настолько неотъемлемая часть рабочего процесса, что зачастую гораздо быстрее добраться до другой точки в буфере, используя опорное слово в качестве привязки для быстрого поиска, вместо того, чтобы оставить домашняя строка, чтобы добраться до мыши. Многократное нажатие C-s или C-r переместит точку на последовательные совпадения. (Вы даже можете переключиться на поиск по регулярным выражениям, нажав M-r во время поиска, чтобы сделать поиск еще более мощным.)

Вы уже упоминали C-l C-l для просмотра текущей строки в верхней части буфера.

Теперь, если вы хотите вернуться в предыдущее место, вы можете использовать

C-u C-x

который прыгает обратно к отметке. Все вышеперечисленные команды для навигации перемещают свою начальную позицию на «кольцо-метку», что означает, что вы можете не только вернуться назад на одну позицию, повторное нажатие Cu Cx вернет вас на множество предыдущие позиции.

person Thomas    schedule 10.01.2013
comment
Нет, спасибо. Это не то, о чем я просил. Я сам очень неохотно отношусь к грызунам всех видов, но бывают ситуации, когда это полезно. В частности, если у вас есть только мышь, а клавиатурой управляет кто-то другой... - person false; 11.01.2013
comment
Конечно, в такой ситуации использование полосы прокрутки было бы полезно, хотя мне это трудно представить (разве человек, управляющий клавиатурой, не мог бы прокручивать? Разве он/она не был бы раздражен, если бы кто-то другой прокручивал? для них?) Кроме этого, ситуация, которую вы описали изначально, может быть выполнена C-s ver C-l C-l, а затем C-u C-x. Я не знаю никаких замен полос прокрутки для Emacs (или любого другого приложения в этом отношении), но в любом случае удачи в поиске решения, более подходящего для ваших нужд. - person Thomas; 11.01.2013
comment
устные экзамены; сидит слева рядом с полосой прокрутки :-) Но это не единственная ситуация - person false; 11.01.2013
comment
Кстати, под X вы могли открыть второй кадр на другом Display, чтобы редактировать одновременно на двух машинах. Это может быть полезно и в вашей ситуации... - person Thomas; 11.01.2013
comment
Совместное использование одних и тех же экранов делает экзамен менее напряженным. И... как это работает с клавиатурой... Возможно, X или Emacs здесь улучшились... - person false; 11.01.2013

Для этой задачи я нажимаю C-l один, два, три раза. Они будут переключаться между серединой-верхом-низом.

person alinsoar    schedule 11.01.2013
comment
Этим я тоже пользуюсь и [S-down] (lambda () (interactive) (scroll-up 1))) и т.д. Но тут у меня в руках только мышка :-) - person false; 11.01.2013