gpt4 book ai didi

emacs - isearch 中的关键和弦

转载 作者:行者123 更新时间:2023-12-02 21:38:07 25 4
gpt4 key购买 nike

我真的很喜欢key-chord.el 。它已经成为我工作流程中不可或缺的一部分,但有时我希望可以将它们放在迷你缓冲区中(对于诸如邪恶搜索之类的事情)。具体来说,我希望 jj 退出 evil-search 并向下移动一行。这可能吗?

我知道我可以将一个既充当前缀又充当命令的命令组合在一起(请参阅 this SO question ),这样我就可以将 j 绑定(bind)到自插入命令,并且 jj 到我的特殊命令。在指定的空闲时间后如何中断事件循环?我很少会输入 jj 一次,而且我仍然喜欢超时的灵活性。

还有其他我不知道的方法可以实现我想要的吗?

编辑:

最初,这个问题是关于一般的迷你缓冲区的。 key-chord.el 似乎与 minibuffer-local-map 配合得很好。然而,它不能与isearch-mode-map一起使用。将命令绑定(bind)到单个常规键(例如 j)在 isearch 中确实有效。这就是我要解决的问题。

最佳答案

我找到了一个手动重现 key-chord.el 行为的解决方案。

(defun isearch-exit-chord-worker (&optional arg)
(interactive "p")
(execute-kbd-macro (kbd "<backspace> <return>")))

(defun isearch-exit-chord (arg)
(interactive "p")
(isearch-printing-char)
(unless (fboundp 'smartrep-read-event-loop)
(require 'smartrep))
(run-at-time 0.3 nil 'keyboard-quit)
(condition-case e
(smartrep-read-event-loop
'(("j" . isearch-exit-chord-worker)
("k" . isearch-exit-chord-worker)))
(quit nil)))

;; example bindings
(define-key isearch-mode-map "j" 'isearch-exit-chord)
(define-key isearch-mode-map "k" 'isearch-exit-chord)

这种方法实际上比 key-chord.el 有几个优点。

  • 它不使用输入法,因此您可以结合使用不同的输入法。
  • 第一个字符会立即显示,如果不正确则被收回,而 key-chord.el 仅在延迟后显示。

关于emacs - isearch 中的关键和弦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20926215/

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