comandos - Ctrl+U en emacs cuando se usan enlaces de teclas malignas
comandos emacs terminal (7)
Estoy usando el maravilloso paquete malvado para enlaces vim en emacs.
La única clave que no está bien es Ctrl + U. Sigue siendo el prefijo de emacs, en lugar de "arriba".
¿Alguien tiene una solución para eso en algún código de ceceo para mis .emacs?
Gracias.
Alternativamente, es bastante fácil definir sus propias combinaciones de teclas, y la evil
API es lo suficientemente rica como para que sea muy fácil:
(define-key evil-normal-state-map (kbd "C-u") ''evil-scroll-up)
(define-key evil-visual-state-map (kbd "C-u") ''evil-scroll-up)
(define-key evil-insert-state-map (kbd "C-u")
(lambda ()
(interactive)
(evil-delete (point-at-bol) (point))))
Tenía que seguir esta ruta ya que el evil-want-Cu-scroll
no funcionaba correctamente para mí.
El Cu
del vim no es ''línea previa'', es más como página arriba. No sé cómo replicar el comportamiento exacto, pero podrías probar Cb
(evil-scroll-page-up) o asignar Ck
, Cj
para subir / bajar 10 líneas.
(global-set-key (kbd "C-k") (lambda () (interactive) (previous-line 10)))
(global-set-key (kbd "C-j") (lambda () (interactive) (next-line 10)))
La tecla Cu
también es bastante importante para Emacs, por lo que probablemente no deba sobrescribirla de todos modos.
Para agregar a la respuesta de melleb , también melleb la combinación de teclas cuando evil-want-Cu-scroll:
(use-package evil
:ensure t
:init
(setq evil-want-C-u-scroll t)
(when evil-want-C-u-scroll
(define-key evil-insert-state-map (kbd "C-u") ''evil-scroll-up)
(define-key evil-normal-state-map (kbd "C-u") ''evil-scroll-up)
(define-key evil-visual-state-map (kbd "C-u") ''evil-scroll-up)
(define-key evil-motion-state-map (kbd "C-u") ''evil-scroll-up))
:config
(evil-mode 1)
...
)
Esto funciona para GNU Emacs 24.4.1
Para que la respuesta de bling funcione para cualquiera que use-package de use-package John Wiegley, asegúrese de definirlo en la sección :init
, de esta forma:
(use-package evil
:ensure t
:init
(setq evil-want-C-u-scroll t)
:config
(evil-mode 1)
;; snip...
)
HTH
Primero, para responder a tu pregunta:
(define-key evil-insert-state-map "/C-u" ''previous-line)
(define-key evil-normal-state-map "/C-u" ''previous-line)
(define-key evil-replace-state-map "/C-u" ''previous-line)
(define-key evil-visual-state-map "/C-u" ''previous-line)
(define-key evil-motion-state-map "/C-u" ''previous-line)
Como no puedo ponerme a prueba (sin maldad), intenta lo siguiente si no funcionan:
Reemplazar
(define-key evil-motion-state-map "/C-u" ''previous-line)
Con
(define-key evil-motion-state-map "cu" ''previous-line)
Hazlo por el modo de mal que quieras / es necesario.
Además, tal vez hay una versión "malvada" de up
, es posible que desee vincular eso en su lugar.
Además, corrígeme si estoy equivocado, pero estoy bastante seguro de que los "barcos" malvados con un "activo" funcional / útil en alguna parte de esas combinaciones de teclas, tal vez lo lean en algún lado.
Vim''s Cu
está en la mitad de la pantalla. Lo repliqué usando lo siguiente,
(define-key evil-normal-state-map (kbd "C-u") ''evil-scroll-up)
De Ch f evil-scroll-up
,
(evil-scroll-up COUNT)
Desplaza la ventana y el cursor COUNT líneas hacia arriba. El valor predeterminado es la mitad de la pantalla.
hay una variable que puedes agregar a tus .emacs
(setq evil-want-C-u-scroll t)
debe aparecer antes de la llamada a (require ''evil)
.