Проще говоря, я пытаюсь получить прокрутку в emacs, как в vim и большинстве других редакторов; когда я, например, две строки снизу/сверху, и я нажимаю вниз/вверх (Ctrl - p, n, ↑, ↓), он идет только по одной строке вверх или вниз, а не на половине экрана.
Как прокручивать строки за строкой в GNU Emacs?
Ответ 1
См. некоторые предложения по EmacsWIki:
(setq scroll-step 1 scroll-conservatively 10000)
Ответ 2
Если вы хотите точно расположить экран, вы можете использовать Ctrl-L.
-
По умолчанию он позиционирует текущую строку в середине экрана.
-
ESC 0 Ctrl-L позиционирует текущую строку вверху.
Ответ 3
Я немного опаздываю на вечеринку, но если вы не возражаете против установки пакета, то плавная прокрутка (github, также доступная в MELPA) может быть тем, что вы ищете - это, безусловно, работает для меня.
После того, как вы установили его, вы можете добавить следующее в ваш init.el:
(require 'smooth-scrolling)
(smooth-scrolling-mode 1)
(setq smooth-scroll-margin 5)
Последняя строка необязательна; он начинает прокручиваться ближе к краю экрана, чем к нему, поэтому у вас всегда есть немного контекста. Отрегулируйте по вкусу.
Ответ 4
Мое решение состоит не в изменении прокрутки по умолчанию 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.
Здесь для описания определения макроса
Здесь для управления прокруткой
Ответ 5
Я использую их в моем файле .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
фактически прокручивает одну строку вниз, потому что буфер перемещается в одну строку вверх.
Ответ 6
Я перепрограммирую свои клавиши со стрелками для выполнения операций прокрутки.
(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)))
Ответ 7
Симплины делают это:
(global-set-key [M-up] (lambda () (interactive) (scroll-up 1)))
(global-set-key [M-down] (lambda () (interactive) (scroll-down 1)))
тогда мета-курсор вверх перемещается вверх, а мета-курсор вниз перемещается вниз.
QED. Не уверен, что все вышеперечисленные люди курили!
Ответ 8
У меня есть следующее в моем файле .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)
Ответ 9
M-x customize-variable scroll-conservatively
Установите значение 1.
Вы действительно не хотите этого делать.
Ответ 10
Чтобы прокрутка "vim" помещала это в ваш файл .emacs:
(defun next-line-and-recenter () (interactive) (next-line) (recenter))
(defun previous-line-and-recenter () (interactive) (previous-line) (recenter))
(global-set-key (kbd "C-n") 'next-line-and-recenter)
(global-set-key (kbd "C-p") 'previous-line-and-recenter)
Ответ 11
Если вы ищете быстрый способ создания эффекта прокрутки, введите C-n
и C-l
последовательно, который перемещает курсор вниз, а затем центрирует его.
Ответ 12
Так как это может раздражать использование M-up, M-down, потому что это мешает org-mode, который перегружает эти команды. Чтобы избежать этой проблемы, я лично использую те команды, которые объединяют 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))))
Ответ 13
Если вы запустите emacs в .xsession, в моем случае установка прокрутки-консервативно на 100+ не будет работать, а также прокрутка-шаг 1. Но если u начнет emacs после X, он работает.
Ответ 14
Просто хотел заметить, что строка "emacs init file для интерактивной команды, приведенной jrockaway выше:
M-x customize-variable scroll-conservatively
является
(setq scroll-conservatively 1)
Это работает - по большей части - для меня. Если вы не нажимаете клавишу со стрелкой вверх/вниз слишком долго, вы прокручиваете строку за строкой. Но если вы оставите его нажатым на 3 секунды или более, в какой-то момент вы, скорее всего, увидите, что страница зависла, и курсор подпрыгнул более чем на одну строку. Но затем он вернется к прокрутке в одну строку, как только достигнет конца экрана, прежде чем, возможно, снова прыгнет через случайное количество секунд и т.д.