Как вы перемещаете указатель вверх или вниз по нескольким строкам с помощью Emacs?
Я могу переместить мой указатель вверх и вниз по одной строке с помощью моей клавиши со стрелками, только отлично в Emacs, поэтому я хотел бы переопределить C-n и C-p для перемещения вверх и вниз по 5 строк за раз.
Я только начинаю изучать, как использовать Emacs, и elisp мне очень чуждо. Я попытался использовать ссылку GNU Emacs lisp, но я не мог найти, как связать нажатие клавиши с несколькими командами.
Вот что я до сих пор (сосредоточившись на определении движения):
(global-set-key "\C-p" '(loop for i in '(1 2 3 4 5) do ('previous-line)))
Но это вызывает сообщение об ошибке, когда я нажимаю C-p, "Неверный аргумент типа".
Любые предложения?
Спасибо!
Ответы
Ответ 1
Эти функции (я считаю, next-line
и previous-line
) принимают аргумент optionnal с C-u, поэтому я думаю, что (next-line 5)
будет делать то, что вы хотите.
Изменить: поэтому я просто попытался, и это будет
(global-set-key (kbd "C-n")
(lambda () (interactive) (next-line 5)))
И то же самое с C-p и previous-line
.
(Fiew не просто писать код в текстовом поле с клавиатурой телефона ^^)
Ответ 2
в соответствии с предупреждением в моей конфигурации emacs и комментарием от 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
, который принимает сложное число в качестве аргумента и может использоваться для навигации во всех четырех направлениях: P