gpt4 book ai didi

emacs - evil-mode Emacs 中的键映射

转载 作者:行者123 更新时间:2023-12-01 13:43:56 38 4
gpt4 key购买 nike

我是 Emacs 的新手,一直在使用 evil-mode。我在重新映射 vim 中的一些映射时遇到了一些麻烦。在 vim 中,使用 map 很容易重新映射键。功能。我想重新映射 cwciwdwdiw .但是我对elisp没有太多了解。那么是否有任何插件或功能可以轻松映射。
谢谢。

最佳答案

首先是坏消息:在不影响其他运营商的情况下,开箱即用目​​前是不可能的。原因是c是一个操作符,所以 Emacs 执行 evil-change尽快c是键入的。然后 Evil 进入运算符(operator)挂起状态和以下 w (或 iw )被读取以找出正确的 Action 。

问题是所有运算符(operator)只有一个运算符(operator)状态,即只有一个共享键映射。因此,更改 wiw不仅会改变所有运算符(operator)的行为cd .

第一个好消息:如果这对你来说没问题,那么你可以简单地做

(define-key evil-operator-state-map "w" "iw")

现在还有更好的消息。如果您了解上述内容,那么使用一点 Emacs lisp 魔法就相对容易解决问题。传递给运算符的范围由函数 evil-operator-range 确定.如果当前操作符是 evil-change,我们的想法是建议这个函数并临时更改键绑定(bind)。或 evil-delete .有几个候选键映射,您可以在其中放置新绑定(bind),但 evil-operator-state-local-map是一个合理的选择。
(defun my/evil-motion-range (orig-fun &rest args)
(if (not (memq this-command '(evil-delete evil-change)))
(apply orig-fun args)
(let* ((orig-keymap evil-operator-state-local-map)
(evil-operator-state-local-map (copy-keymap orig-keymap)))
(define-key evil-operator-state-local-map "w" "iw")
(apply orig-fun args))))

(advice-add 'evil-operator-range :around #'my/evil-motion-range)

实际上,这种技术将允许以通用方式实现特定于运算符(operator)的绑定(bind)。

关于emacs - evil-mode Emacs 中的键映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37238920/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com