在 Emacs 中重新绑定 isearch 键时出现问题

在 Emacs 中重新绑定 isearch 键时出现问题

您好,我正在尝试将 isearch 的 Emacs 键 (Cs) 重新绑定到更像 CUA 的 Ci,因为 Cs 必须保存。我做了以下操作:

(global-set-key "\C-i" 'isearch-forward)
(global-set-key (kbd "C-S-i") 'isearch-backward)

在我尝试查找下一个匹配项之前,它工作正常。问题是,在 Emacs 中,这是通过再次键入 Cs 来实现的。不幸的是,我无法将 isearch-repeat-forward 命令绑定到 Ci,因为这会取消 Ci 与 isearch-forward 的绑定。

我可能不介意使用 Cr 之类的命令来重复,但令人讨厌的是,emacs 有一个不同的重复命令用于正向和反向增量搜索

有谁知道解决这个问题的好方法吗?

答案1

isearch-repeat-forward必将C-s搜索模式。您可能会注意到,当您按下 时,C-s您会在缓冲区中输入一个新的次要模式。由于每种模式都有自己的键绑定映射,因此您应该更改C-s此映射上的绑定。该define-key函数接收一个参数,即您想要绑定键的模式映射,在这种情况下isearch-mode。尝试将其放在您的init.el

(define-key isearch-mode-map (kbd "C-i") 'isearch-repeat-forward)
(define-key isearch-mode-map (kbd "C-S-i") 'isearch-repeat-backward)

相关内容