Emacs 24.1:如何从旧版本恢复 i-search Ctrl-Y 行为?

Emacs 24.1:如何从旧版本恢复 i-search Ctrl-Y 行为?

在 emacs 24.1 中,当您在交互式搜索中执行 Ctrl-Y 时,它会将 kill 缓冲区拉入搜索字符串(在任何其他应用程序的语言中为“它粘贴剪贴板内容”)并尝试匹配它。

在最近的 20 个版本中,按 Ctrl-Y 会匹配当前行的其余部分。我有两个非常常见的用例:

  1. 匹配此行,恢复缓冲区,并搜索行

  2. (不常见:)该文本还在缓冲区的什么地方?

我尝试修改 /lisp/isearch.el,切换 isearch-yank-line(我想要的)和 isearch-yank-kill(我很乐意将其绑定到荒谬的 \Ms\Ce 键序列)的绑定。但我认为这个文件甚至没有被拾取。但我认为这个文件甚至没有被加载。如果我明确加载它,我仍然会得到 24.1 行为。

这是我的零钱:

(add-hook 'isearch-mode-hook
   (lambda ()
     (define-key isearch-mode-map    "\C-y" 'isearch-yank-line)
     (define-key isearch-mode-map "\M-s\C-e" 'isearch-yank-kill)
    ))

行为没有变化。我甚至尝试破解 isearch.el,仍然没有变化。

顺便说一下,这是在 Windows 上,但我认为这并不重要。

有人能告诉我如何恢复旧的绑定吗?

答案1

对我有用的是采用你的钩子并将其与我自己的 isearch-mode-hook 结合起来。

(你可以把它放进去~/.emacs...我更进一步,将单独的模式保留在里面~/.emacs.el/.modes.el,然后对该文件进行字节编译,这样(load ".modes" t t)可以让事情变得不那么混乱。)

(setq isearch-mode-hook
      '(lambda nil
     (define-key isearch-mode-map "\C-y"   'isearch-yank-line)
     (define-key isearch-mode-map "\C-f"   'isearch-repeat-forward)
     (define-key isearch-mode-map "\C-t"    'isearch-toggle-regexp)))

效果很好。谢谢你帮我找回了我的^Y

相关内容