Как вы перемещаете указатель вверх или вниз несколько строк с помощью Emacs?
-
27-09-2019 - |
Вопрос
Я могу переместить мой указатель вверх и вниз по одной линии с моей клавишей со стрелкой просто в Emacs, поэтому я хотел бы переопределить CN и CP для перемещения вверх и вниз по 5 строкам за раз.
Я только начинаю научиться использовать Emacs, и ELISP очень инопланет для меня. Я пытался использовать GNU EMACS LISP Ссылка, но я не мог найти, как связать нажатие клавиши к нескольким командам.
Вот что я имею до сих пор (концентрируясь на определении движения):
(global-set-key "\C-p" '(loop for i in '(1 2 3 4 5) do ('previous-line)))
Но это приносит сообщение об ошибке при попадании в CP, «неправильный тип аргумента».
Какие-либо предложения?
Спасибо!
Решение
Эти функции (я верю next-line
и previous-line
) принять дополнительные аргументы с CU, поэтому я думаю, что (next-line 5)
сделал бы то, что вы хотите.
Редактировать: так что я просто пытался, и это было бы
(global-set-key (kbd "C-n")
(lambda () (interactive) (next-line 5)))
И то же самое с CP и previous-line
.
(Советы не просто писать код в текстуарее с телефонной клавиатурой ^^)
Другие советы
Согласно предупреждению в моем эмацевом конфиге, и комментарий от Peter Ajtai, я предлагаю версию, использующую forward-line
от моего init.el
(global-set-key (kbd "C-n")
(lambda () (interactive) (forward-line 5)))
(global-set-key (kbd "C-p")
(lambda () (interactive) (forward-line -5)))
Конечно, есть также forward-char
, работает так же, просто в другом направлении.
Единственное, что пропало, это complex-forward
который принимает сложный номер в качестве аргумента, и может использоваться для навигации во всех 4 направлениях: P