Как вы перемещаете указатель вверх или вниз на несколько строк в 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

Другие вопросы по тегам