Как вы перемещаете указатель вверх или вниз на несколько строк в Emacs? - PullRequest
15 голосов
/ 17 апреля 2010

Я могу перемещать мой указатель вверх и вниз на одну строку с помощью моей клавиши со стрелкой в ​​Emacs, поэтому я хотел бы переопределить C-n и C-p для перемещения вверх и вниз на 5 строк за раз.

Я только начинаю учиться использовать Emacs, и elisp мне очень чужд. Я пытался использовать GNU Emacs lisp reference , но не смог найти, как связать нажатие клавиш с несколькими командами.

Вот что я имею до сих пор (концентрируясь на определении повышения):

(global-set-key "\C-p"  '(loop for i in '(1 2 3 4 5) do ('previous-line))) 

Но это вызывает сообщение об ошибке, когда я нажимаю C-p "Неверный аргумент типа".

Есть предложения?

Спасибо!

Ответы [ 2 ]

18 голосов
/ 17 апреля 2010

Эти функции (я считаю, next-line и previous-line) принимают необязательный аргумент с C-u, поэтому я думаю, что (next-line 5) сделает то, что вы хотите.

Изменить: так что я просто попытался, и это будет

(global-set-key (kbd "C-n")
    (lambda () (interactive) (next-line 5)))

И то же самое с C-p и previous-line.

(Fiew не просто написать код в текстовой области с клавиатуры телефона ^^)

1 голос
/ 31 мая 2016

в соответствии с предупреждением в моем конфиге 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

...