Как вы перемещаете указатель вверх или вниз на несколько строк в Emacs?
Я могу перемещать мой указатель вверх и вниз на одну строку с помощью моей клавиши со стрелкой в 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 "Неверный аргумент типа".
Какие-либо предложения?
Спасибо!
2 ответа
Те функции (я считаю, next-line
а также previous-line
) принять дополнительный аргумент с Cu, так что я думаю, что (next-line 5)
будет делать то, что вы хотите.
Изменить: так что я просто попытался, и это будет
(global-set-key (kbd "C-n")
(lambda () (interactive) (next-line 5)))
И то же самое с Cp и previous-line
,
(Fiew не просто написать код в текстовой области с клавиатуры телефона ^^)
В соответствии с предупреждением в моем конфиге emacs и комментарием от Питера Айтаи, я предлагаю версию, которая использует 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