我使用的是 emacs 23.4.1。在大多数情况下,查询替换工作正常,正如预期的那样。然而,有时当我尝试替换缓冲区中间的某些内容并在点之后的第一次出现时键入 y 时,该点将立即跳转到整个缓冲区的第一次出现。例如:
foo -------//开始
bar -------//此处使用 foo
替换为 bar
foo -------//在这里输入y
,然后跳转到开头
这非常烦人,我无法使用一些精确的输入重现这个问题。但每次出现时,关闭emacs并重新打开即可解决。有人可以帮助我吗?
最佳答案
另一个观察结果: 我注意到同样的问题,该点甚至来回跳了好几次。 我可以通过使用 (setq Semantic-change-hooks nil) 关闭语义更改钩子(Hook)来使其消失。 semantic-change-hooks 设置为运行语义编辑更改功能句柄更改。 所有这些都发生在semantic-edit.el 中,它将semantic-change-function 添加到after-change-functions 中。 简而言之,我不能指出真正的罪魁祸首,但这与语义有关,这也是我最初的怀疑(我猜 jhh 就是提到 CEDET 的人)。
注意:关闭语义更改 Hook 并不是一个解决方案,除非您愿意放弃一些语义功能。
关于emacs 查询替换跳转到缓冲区的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14073757/