如何在Doom Emacs中将jh和fd映射为<Esc>?

5

我知道evil-escape-sequence,但据我所知,你只能将一个键绑定到它。我想要fdjh都能让我从插入模式进入正常模式。

我也尝试了(map! :i "jh" #'evil-normal-mode)这样的方法,但是用这个方式,每当我输入j时,Emacs就会冻结并等待我完成命令。


1
general.el 有一个宏可以做到这一点。不确定这是否仍然有效。https://github.com/noctuid/general.el#use-with-key-chord。以 general-define-key 开头的 sexp。您也可以在其他邪恶状态下绑定它。 - Hubisan
3个回答

4

我使用了keychord包来实现这个功能。请注意,该包通过测量按键之间的时间差来确定是否触发配对的函数。以下是如何在额外功能中使用 h, j, k, l(在正常模式下映射为导航键)。

在 'init.el' 中添加 (package! key-chord),并在 'config.el' 中添加以下代码。

(require 'key-chord)
(key-chord-mode t)
(key-chord-define-global "fd" 'evil-normal-state)
(key-chord-define-global "FD" 'evil-normal-state)
(key-chord-define-global "jh" 'evil-normal-state)
(key-chord-define-global "JH" 'evil-normal-state)

我添加了大写等效项,以便在大写锁定打开时仍能具有相同的功能。


0

0

如果您不想使用键绑定,还有另一种方法:

(defun evil-insert-jk-for-normal-mode ()
  (interactive)
  (insert "j")
  (let ((event (read-event nil)))
    (if (= event ?k)
      (progn
        (backward-delete-char 1)
        (evil-normal-state))
      (push event unread-command-events))))
(define-key evil-insert-state-map "j" 'evil-insert-jk-for-normal-mode)

(在 doom-emacs v3.0.0-alpha 中测试过。)


整洁,谢谢!Adrian - 2015 penn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接