10

数字を再バインドすることは可能ですか。たとえば、「5」は「$」で、「%」は「5」ですか?

Evil-maps.el では、数字は次のように定義されています。

(define-key evil-motion-state-map "1" 'digit-argument)
(define-key evil-motion-state-map "2" 'digit-argument)
...

@ChillarAnandの答えを試しました

(add-hook 'evil-mode-hook 'evil-mode-bindings)

(defun evil-mode-bindings ()
  "Bind symbols to digits."
  (define-key key-translation-map (kbd "%") "5")
  (define-key key-translation-map (kbd "*") "8")
  )
(define-key evil-normal-state-map "5" 'evil-beginning-of-line)
(define-key evil-normal-state-map "8" 'evil-end-of-line)

しかし、Shift-5それでも のようには動作しません。5同じことが にも当てはまります8。上記の構成で修正できますか?

@tarblet ソリューションも同様です。

テストとして使用するのは、シーケンスShift-5,Gです。

4

2 に答える 2

2

かなりハックな解決策ですが、それはあなたが望むことをするはずです:

(defun capslock-digit-argument-fn (digit)
  `(lambda (arg)
     (interactive "P")
     (setq last-command-event (+ ,digit ?0))
     (digit-argument arg)))

(define-key evil-motion-state-map "!" (capslock-digit-argument-fn 1))
(define-key evil-motion-state-map "@" (capslock-digit-argument-fn 2))
(define-key evil-motion-state-map "#" (capslock-digit-argument-fn 3))
(define-key evil-motion-state-map "$" (capslock-digit-argument-fn 4))
(define-key evil-motion-state-map "%" (capslock-digit-argument-fn 5))
(define-key evil-motion-state-map "^" (capslock-digit-argument-fn 6))
(define-key evil-motion-state-map "&" (capslock-digit-argument-fn 7))
(define-key evil-motion-state-map "*" (capslock-digit-argument-fn 8))
(define-key evil-motion-state-map "(" (capslock-digit-argument-fn 9))

digit-argumentどのキーが押されたかを把握しようとするときに参照する変数を再バインドします。)まったく同じように動作しなくても構わない場合0(行頭にジャンプせず、数字の引数としてのみ機能する)、同様に設定できます。

于 2015-05-24T10:55:08.607 に答える