Как прокрутить строку за строкой в ​​GNU Emacs? - PullRequest
79 голосов
/ 15 июля 2009

Проще говоря, я пытаюсь получить прокрутку в emacs, как в vim и большинстве других редакторов; когда я, например, две строки снизу вверх, и я нажимаю вниз / вверх ( Ctrl - p , n , , ) он идет только на одну строку вверх или вниз, а не на половину экрана.

Ответы [ 13 ]

47 голосов
/ 15 июля 2009

Если вы хотите точно расположить экран, вы можете использовать Ctrl-L.

  • По умолчанию текущая строка располагается в середине экрана.

  • ESC 0 Ctrl-L позиционирует текущую строку сверху.

46 голосов
/ 15 июля 2009

Посмотрите некоторые предложения на EmacsWIki:

(setq scroll-step            1
      scroll-conservatively  10000)
37 голосов
/ 31 марта 2013

Я немного опоздал на вечеринку, но если вы не против установить пакет, то плавная прокрутка ( github , также доступна в MELPA ) может быть, то, что вы ищете - это, безусловно, работает для меня.

После того, как вы установили его, вы можете добавить следующее в свой init.el:

(require 'smooth-scrolling)
(smooth-scrolling-mode 1)
(setq smooth-scroll-margin 5)

Последняя строка необязательна; он начинает прокручивать около края экрана, а не на нем, поэтому у вас всегда есть небольшой контекст вокруг точки. Отрегулируйте по вкусу.

25 голосов
/ 04 августа 2011

Мое решение состоит не в том, чтобы изменить прокрутку Emac по умолчанию, а в том, чтобы создать команду последовательности клавиш из макроса. Таким образом, у вас есть удобный способ прокрутки одной строки за раз, когда вы хотите. Не идеально, но супер просто. Просто бывает, что M- (↓) и M- (↑) доступны, вот что я использовал.

Вот как я это сделал. Во-первых, вам нужно записать макрос для прокрутки одной строки, вверх и вниз.

Начать макрос

C-x ( 

Прокрутите вниз на одну

C-u 1 C-v

Остановить макрос

C-x )

Для прокрутки вверх используйте

C-u 1 M-v

Далее вам нужно назвать макрос.

M-x name-last-kbd-macro

Дайте ему имя при появлении запроса:

down-one-line

Затем просто используйте следующее, чтобы связать последовательность клавиш с этим именем команды:

M-x global-set-key

И после запроса используйте что-то вроде:

M-(down arrow)

Затем он спросит вас, какую команду вы хотите связать, и вы должны дать ему имя, которое вы изобрели ранее, например, вниз на одну строку.

Вот откуда я получил эту информацию. Вы также можете найти инструкции ниже и в других местах о добавлении макроса в файл .emacs.

Здесь для объяснения определения макроса

Здесь , как управлять прокруткой

21 голосов
/ 26 апреля 2013

Я использую их в моем .emacs файле с 2000 года.

(global-set-key (quote [M-down]) (quote View-scroll-line-forward))
(global-set-key (quote [M-up]) (quote View-scroll-line-backward)) 

Таким образом, я могу сохранить поведение Emacs по умолчанию, а также прокручивать по одной строке за раз, в зависимости от того, что я делаю.

Это работало, по крайней мере, до GNU Emacs 22. Недавно я обновился до Emacs 24 и обнаружил, что View-scroll-line-forward и View-scroll-line-backward больше не доступны. После некоторой охоты я обнаружил, что работа прокрутки вверх-вниз и прокрутки вниз-вниз. Так что, если вы используете Emacs 24, вы можете использовать это.

(global-set-key (quote [M-down]) (quote scroll-up-line))
(global-set-key (quote [M-up]) (quote scroll-down-line)) 

В основном я пропустил Emacs 23, поэтому, если вы используете эту версию, вы можете поэкспериментировать с обоими выше.

Примечание: scroll-up-line фактически прокручивает одну строку вниз , поскольку буфер перемещается на одну строку вверх.

13 голосов
/ 15 июля 2009

Я переплетаю клавиши со стрелками для выполнения операций прокрутки.

(global-set-key [up] (lambda () (interactive) (scroll-down 1)))
(global-set-key [down] (lambda () (interactive) (scroll-up 1)))

(global-set-key [left] (lambda () (interactive) (scroll-right tab-width t)))
(global-set-key [right] (lambda () (interactive) (scroll-left tab-width t)))
11 голосов
/ 06 марта 2013

Simpls делают это:

(global-set-key [M-up] (lambda () (interactive) (scroll-up 1)))
(global-set-key [M-down] (lambda () (interactive) (scroll-down 1)))

, затем мета-курсор вверх перемещается вверх, а мета-курсор вниз перемещается вниз.

QED. Не уверен, что курят все вышеперечисленные люди!

5 голосов
/ 15 июля 2009

В моем файле .emacs есть следующее, чтобы включить приятное поведение ctrl-up, ctrl-down. Я также использую это для колесика мыши.

(defun scroll-down-in-place (n)
  (interactive "p")
  (previous-line n)
  (scroll-down n))

(defun scroll-up-in-place (n)
  (interactive "p")
  (next-line n)
  (scroll-up n))

(global-set-key [mouse-4] 'scroll-down-in-place)
(global-set-key [mouse-5] 'scroll-up-in-place)
(global-set-key [C-up] 'scroll-down-in-place)
(global-set-key [C-down] 'scroll-up-in-place)
2 голосов
/ 14 июня 2016

Поскольку использование M-up , M-down может раздражать, поскольку это мешает режиму org, который перегружает эти команды. Чтобы избежать этой проблемы, я лично использую те команды, которые объединяют M-page-up M-page-down". Здесь я определил прокрутку вверх и вниз до 1 строки.

;;;scroll by `number-of-lines' without the cursor attached to the screen
(global-set-key [M-prior] (lambda () (interactive) (let ((number-of-lines 1))
                                                  (scroll-down number-of-lines)
                                                  (forward-line (- number-of-lines)))))
(global-set-key [M-next] (lambda () (interactive) (let ((number-of-lines 1))
                                                  (scroll-up number-of-lines)
                                                  (forward-line number-of-lines))))

;;;scroll by `number-of-lines' with the cursor attached to the screen
(global-set-key [S-M-prior] (lambda () (interactive) (let ((number-of-lines 1))
                                                  (scroll-down number-of-lines))))
(global-set-key [S-M-next] (lambda () (interactive) (let ((number-of-lines 1))
                                                  (scroll-up number-of-lines))))
2 голосов
/ 28 мая 2015

Если вы ищете быстрый способ создания эффекта прокрутки, введите последовательно C-n и C-l, которые перемещают курсор вниз, а затем центрируют его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...