Como você move o ponteiro para cima ou para baixo várias linhas com o Emacs?
-
27-09-2019 - |
Pergunta
Eu posso mover meu ponteiro para cima e para baixo uma linha com minha tecla de flecha muito bem em Emacs, então gostaria de redefinir CN e CP para subir e descer 5 linhas por vez.
Estou apenas começando a aprender a usar o Emacs, e Elisp é muito estranho para mim. Eu tentei usar o GNU Emacs Lisp Reference, mas não consegui encontrar como ligar um pressionamento de tecla a vários comandos.
Aqui está o que tenho até agora (concentrando -se na definição de subida):
(global-set-key "\C-p" '(loop for i in '(1 2 3 4 5) do ('previous-line)))
Mas, isso traz uma mensagem de erro quando eu atingi o CP, "argumento do tipo errado".
Alguma sugestão?
Obrigado!
Solução
Aqueles funções (eu acredito next-line
e previous-line
) aceitar um argumento opcional com Cu, então eu acho que (next-line 5)
faria o que você quer.
Edit: então eu apenas tentei e isso seria
(global-set-key (kbd "C-n")
(lambda () (interactive) (next-line 5)))
E o mesmo com CP e previous-line
.
(Fiew não é simples de escrever código em uma textarea com um teclado de telefone ^^)
Outras dicas
De acordo com o aviso na minha configuração EMACS, e o comentário de Peter Ajtai, proponho a versão que usa forward-line
do meu init.el
(global-set-key (kbd "C-n")
(lambda () (interactive) (forward-line 5)))
(global-set-key (kbd "C-p")
(lambda () (interactive) (forward-line -5)))
Claro que há também forward-char
, funciona da mesma forma, apenas em uma direção diferente.
A única coisa que está faltando é um complex-forward
Isso leva um número complexo como argumento e pode ser usado para navegar nas 4 direções: P