【问题标题】:key chords in isearchisearch中的关键和弦
【发布时间】:2014-01-04 20:16:05
【问题描述】:

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

我知道我可以将一个既作为前缀又作为命令的命令组合在一起(请参阅this SO question),因此我可以将j 绑定到自插入命令,并将jj 绑定到我的特殊命令。在指定的空闲时间后如何中断事件循环?我确实会在蓝月亮中输入一次jj,但我仍然希望超时的灵活性。

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

编辑:

最初,这个问题是关于 minibuffer 的。 key-chord.el 似乎适用于 minibuffer-local-map。但是,它不适用于isearch-mode-map。将命令绑定到像 j 这样的单个常规键在 isearch 中确实有效。这就是我要解决的问题。

【问题讨论】:

  • 你甚至没有将key-chord.el 链接到它的源代码(我现在已经编辑了这篇文章)。你为什么不从代码的角度解释问题是什么?为什么它不做你想做的事,当在 minibuffer 中时?您是否尝试过将 key-chord-define 与 minibuffer 键盘映射一起使用?
  • 啊,对不起。该问题似乎特定于isearch-mode-map。没发生什么事。我不知道在代码方面怎么说。
  • +1 提醒我key-chord.el 的存在,这似乎非常有用。

标签: emacs evil-mode


【解决方案1】:

我找到了一个手动重现 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 仅在延迟后显示。

【讨论】:

  • 如何启用它?我非常想要这个功能。
  • (define-key isearch-mode-map "j" 'isearch-exit-chord) (define-key isearch-mode-map "k" 'isearch-exit-chord)如果你觉得有用,请点赞。
  • 太棒了,非常感谢。为了完整起见,我会将其添加到您的答案中。
  • 谢谢。提示:如果您认为需要改进,可以自行编辑任何答案。 (例如,如果我不在,您可以自己编辑。)
【解决方案2】:

我发现这很有用:

(defun isearch-enable-key-chord ()
  (key-chord-mode 1)
  (key-chord-define isearch-mode-map "jj" 'isearch-cancel))
(add-hook 'isearch-mode-hook 'isearch-enable-key-chord)

【讨论】:

  • 非常适合我。
猜你喜欢
  • 1970-01-01
  • 2012-07-12
  • 2015-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 2014-01-28
  • 2021-06-20
相关资源
最近更新 更多