49

私はemacsのvimバインディングに素晴らしい悪のパッケージを使用しています。

正しくないキーはCtrl+Uです。「up」ではなく、emacs プレフィックスのままです。

私の.emacsのいくつかのLispコードで、誰かがその解決策を持っていますか?

ありがとう。

4

7 に答える 7

56

あなたがあなたに追加できる変数があります.emacs

(setq evil-want-C-u-scroll t)

への呼び出しの前に表示する必要があります(require 'evil)

于 2013-09-17T13:58:41.063 に答える
17

または、独自のキーバインドを定義するのは簡単で、evilAPI はそれを非常に簡単にするのに十分なほど豊富です:

(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))))

evil-want-C-u-scroll私にとっては正しく機能していなかったので、このルートに行かなければなりませんでした。

于 2014-05-17T20:10:22.933 に答える
9

John Wiegley のuse-packageを使用しているすべての人にblingの回答が機能するようにするには、セクションで次のように定義してください。:init

(use-package evil
 :ensure t
 :init
 (setq evil-want-C-u-scroll t)
 :config
 (evil-mode 1)
 ;; snip...
)

HTH

于 2016-10-03T07:46:16.877 に答える
1

vimのC-uは「前の行」ではなく、ページアップに似ています。正確な動作を再現する方法はわかりませんが、C-b(evil-scroll-page-up) または map をC-k試して、 C-j10 行上下に移動することができます。

(global-set-key (kbd "C-k") (lambda () (interactive) (previous-line 10)))
(global-set-key (kbd "C-j") (lambda () (interactive) (next-line 10)))

キーは Emacs にとっても非常に重要であるため、C-uとにかく上書きするべきではありません。

于 2013-01-13T15:49:27.973 に答える
0

まず、あなたの質問に答えるために:

(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)

私は実際に自分自身をテストすることはできません(悪ではありません)ので、うまくいかない場合は次のことを試してください。

交換

(define-key evil-motion-state-map "\C-u" 'previous-line)

(define-key evil-motion-state-map "cu" 'previous-line)

あなたが望む邪悪なモードのためにこれを行います/必要です.

さらに、 の「邪悪な」バージョンが存在upする可能性があり、代わりにそれをバインドしたい場合があります。

また、私が間違っている場合は修正してください。ただし、これらのキーバインディングのどこかに機能的/有用な「アップ」を備えた悪が「出荷」されていると確信しています。おそらくどこかで読んでください。

于 2013-01-13T10:26:56.147 に答える