【问题标题】:How to map jh and fd to <Esc> in Doom Emacs?如何在 Doom Emacs 中将 jh 和 fd 映射到 <Esc>?
【发布时间】:2020-11-28 23:49:12
【问题描述】:

我知道evil-escape-sequence,但据我所知,您只能为其设置一个键绑定。我希望fdjh 都让我从插入状态进入正常状态。

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

【问题讨论】:

标签: emacs evil-mode


【解决方案1】:

我已经用 keychord 包做到了这一点。请注意,此包测量击键之间的时间范围,以确定是否触发配对功能。这就是您可以使用h, j, k, l(在正常模式下映射到导航的键)来实现此额外功能的方式。 将(package! key-chord) 添加到“init.el”并将以下代码添加到“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)

我添加了大写的等效项,这样即使大写锁定打开,您也可以使用相同的功能。

【讨论】:

    【解决方案2】:

    对于厄运 emacs,

    package.el 中由 spc-f-p 打开

    (package! key-chord) 安装包。

    重新映射我发现这很有帮助 https://stackoverflow.com/a/13543550/14183927

    【讨论】:

      【解决方案3】:

      如果你不想使用key-chord,还有另一种方法:

      (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 中测试。)

      【讨论】:

      • 整洁,tks!阿德里安
      猜你喜欢
      • 1970-01-01
      • 2021-06-13
      • 2014-09-06
      • 1970-01-01
      • 2011-03-28
      • 2016-11-28
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多