Проще говоря, я пытаюсь получить прокрутку в emacs, как в vim и большинстве других редакторов; когда я, например, две строки из нижней / верхней части, и я нажимаю вниз / вверх ( Ctrl- p, n, ↑, ↓) она идет только одна линия вверх или вниз, а не половину экрана.
87
z.
vim чаще, чтобы почувствовать себя Emacs ;-) Это может быть необычно, но на самом деле это более полезно, чем прокрутка строка за строкой ИМХО.Ответы:
См. Некоторые предложения по EmacsWIki:
источник
scroll-conservatively
. Предупреждения против этого немного странные - если это вызывает проблемы, достаточно легко удалить строку из вашего init.el!Если вы хотите точно расположить экран, вы можете использовать Ctrl-L.
По умолчанию он помещает текущую строку в середину экрана.
ESC 0 Ctrl-L помещает текущую строку вверху.
источник
Я немного опоздал на вечеринку, но если вы не против установки пакета, то плавная прокрутка ( github , также доступна в MELPA ) может быть тем, что вы ищете - это определенно работает для меня.
После того, как вы его установили, вы можете добавить в свой init.el следующее:
(require 'smooth-scrolling) (smooth-scrolling-mode 1) (setq smooth-scroll-margin 5)
Последняя строка не обязательна; он начинает прокручиваться ближе к краю экрана, а не к нему, поэтому у вас всегда есть небольшой контекст вокруг точки. Настроить по вкусу.
источник
Мое решение состоит не в том, чтобы изменить прокрутку Emac по умолчанию, а в том, чтобы создать команду последовательности клавиш из макроса. Таким образом, у вас будет удобный способ прокрутки по одной строке за раз, когда захотите. Не идеально, но очень просто. Так уж случилось, что доступны M- (↓) и M- (↑), вот что я использовал.
Вот как я это сделал. Во-первых, вам нужно записать макрос для прокрутки одной строки вверх и вниз.
Начать макрос
Прокрутите вниз на один
C-u 1 C-v
Остановить макрос
Для прокрутки вверх используйте
C-u 1 M-v
Далее вам нужно назвать макрос.
При появлении запроса дайте ему имя, например:
Затем просто используйте следующее, чтобы связать последовательность клавиш с этим именем команды:
И при появлении запроса используйте что-то вроде:
M-(down arrow)
Затем он спросит вас, какую команду вы хотите привязать, и вы должны дать ей имя, которое вы придумали ранее, например, в одну строку.
Вот откуда я получил эту информацию. Вы также можете найти инструкции по добавлению макроса в файл .emacs ниже и в других местах.
Здесь для объяснения определения макроса
Вот как управлять прокруткой
источник
Я использую их в своем
.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
самом деле прокручивается на одну строку вниз , потому что буфер перемещается на одну строку вверх.источник
Я повторно привязываю свои клавиши со стрелками для выполнения операций прокрутки.
(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)))
источник
Простые делают это:
(global-set-key [M-up] (lambda () (interactive) (scroll-up 1))) (global-set-key [M-down] (lambda () (interactive) (scroll-down 1)))
затем мета-курсор вверх перемещается вверх, а мета-курсор вниз - вниз.
QED. Не уверен, что курили все вышеперечисленные люди!
источник
В моем файле .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)
источник
Чтобы прокрутка "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)
источник
Поскольку использование класса может раздражать 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))))
источник
M-x customize-variable scroll-conservatively
Установите его на 1.
Однако вы действительно не хотите этого делать.
источник
Если вы ищете быстрый способ создать эффект прокрутки, введите
C-n
иC-l
последовательно, который перемещает курсор вниз, а затем центрирует его.источник
Если вы запустите emacs в .xsession, в моем случае установка scroll-conservatively на 100+ не будет работать, ни шаг прокрутки 1. Но если вы запустите emacs после X, это сработает.
источник
Если вы не против использования мыши и у вас есть колесо прокрутки, вы можете настроить переменную mouse-wheel-scroll-amount одним из следующих способов:
Ch v колесико мыши-количество прокрутки (щелкните по настройке, измените значение на «Определенное количество строк» 1, ApplyAndSave.)
или добавьте в .emacs строку: '(mouse-wheel-scroll-amount' (1 ((shift). 1) ((meta)) ((control). text-scale)))
Есть много возможностей, перечисленных на https://www.emacswiki.org/emacs/Scrolling
источник