49

我正在使用美妙的 evil 包进行 emacs 中的 vim 绑定。

一个不正确的键是Ctrl+ U。它仍然是 emacs 前缀,而不是“up”。

有人在我的 .emacs 的一些 lisp 代码中对此有解决方案吗?

谢谢。

4

7 回答 7

56

有一个变量可以添加到您的.emacs

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

它需要出现在调用 to 之前(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

为了让bling的答案适用于使用 John Wiegley 的use-package的任何人,请确保在该:init部分中定义它,如下所示:

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

高温高压

于 2016-10-03T07:46:16.877 回答
7

VimC-u是半屏向上翻页。我使用以下方法复制了它,

(define-key evil-normal-state-map (kbd "C-u") 'evil-scroll-up)

C-h f evil-scroll-up,

(邪恶向上滚动 COUNT)

向上滚动窗口和光标 COUNT 行。默认为屏幕的一半。

于 2013-05-02T02:11:35.267 回答
1

vimC-u不是“上一行”,它更像是向上翻页。我不知道如何复制确切的行为,但您可以尝试C-b(evil-scroll-page-up) 或 mapC-kC-j/下 10 行。

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

密钥对C-uEmacs 也非常重要,因此您可能无论如何都不应该覆盖它。

于 2013-01-13T15:49:27.973 回答
1

为了增加melleb的答案,我还定义了 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)
...
)

这适用于 GNU Emacs 24.4.1

于 2017-01-27T17:08:39.677 回答
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 回答