美好的一天,
我信赖的老碳Emacs已经形成了令人沮丧的习惯:当我使用C-s时,迷你缓冲区会提示搜索字符串,但它并没有集中注意力。显然,输入字符串不会做任何事情。我不清楚当时哪个缓冲区有焦点。
当我按下C-g时,搜索将照常取消。当我按Return键时,I-search提示变为搜索提示,迷你缓冲区重新获得焦点。 更新 ---当我输入C-w时,像往常一样将当前单词设置为搜索字符串,随后的C-s按预期进行搜索。
AFAIK,我没有更改.emacs文件中的任何内容,也没有自定义任何内容。 emacs的版本是相同的,操作系统也是如此。重启emacs后,此行为也可以继续存在。即使是emacs -q也无法解决它。
更新 - 证明“焦点”不是正确的词;使用i-search,焦点会停留在您正在搜索的缓冲区中,但迷你缓冲区会回显搜索词。嗯,应该,但事实并非如此。因此,以下片段的方向是错误的。
我已尝试使用此代码片段重新关注迷你缓冲区:
(defun minibuffer-refocus ()
"Refocus the minibuffer if it is waiting for input."
(interactive)
(when (active-minibuffer-window)
(message "")
(select-window (minibuffer-window))))
(global-set-key (kbd "C-M-g") 'minibuffer-refocus)
但无济于事。它在其他情况下就像魅力一样,但不适用于增量搜索... 更新 - 这是预期的。
有没有人知道发生了什么事,或者是否有寻找它的提示?这真烦人......
详情
坏消息是它又回来了。我也意识到上面的片段确实有帮助,因为迷你缓冲区并没有真正得到关注。
答案 0 :(得分:1)
请注意,当您运行C-s时,M-e提供了一种编辑搜索模式的方法,但它比C-s按预期工作效率低得多......
我面对完全相同的问题(在两台不同的Lion机器上),我不明白出了什么问题,但我可以告诉你:
我使用了几种“输入法”,即几种键盘映射:法语和美国扩展。我选择了OS X选项,允许键盘映射依赖于当前应用程序(例如,我通常使用US代表Emacs,而法语代表邮件代码)。
法语映射正常,
US扩展映射失败,如您所述,
在同一个Emacs会话中,从一开始到另一个会话保留不变量:法语有效,美国扩展被破坏,
好消息是:美国未扩展似乎正常运作!也许(也许)Cs是OS X上的一些前缀,在美国扩展映射中用于某些多键字符,并且在OS X之间启动了一些非常糟糕的交互,可能期望下一个字符部分的多键序列,以及从中窃取它们的Emacs。疯狂猜测。
答案 1 :(得分:0)
好消息是它按预期再次运作。坏消息是我不知道是什么修复了它。
我认为@ vpit3833指向正确的方向,带有递归编辑建议;我正在回答关于Alt和Esc键的另一个问题,在尝试了一些事情之后,比如做ESC-x
和类似的组合,增量搜索再次开始工作。
抱歉,我没有真正的答案,但至少我可以关闭这个话题。
答案 2 :(得分:0)
这是适合我的解决方案。我发布它是因为我搜索解决方案而无法找到它。
(defun isearch (arg)
(interactive "MI-search: ")
(select-window (minibuffer-window))
(isearch-forward))
(global-set-key "\C-s" 'isearch)
我在Ubuntu上使用GNU Emacs。
编辑,但如果您使用它,您将无法搜索迷你广告。由于此功能,您在搜索时无法专注于迷你卡。例如,您可以执行类似M-x C-s的操作来搜索函数名称。如果你专注于迷你小游戏,你就不能这样做。
答案 3 :(得分:0)
我遇到了完全相同的问题,非常明显,并且发现(正如有人已经指出的那样)它与OS X自己的键盘/输入方法有关。我一直在使用普通的美式键盘,但后来改为Unicode键盘,这就是问题出现的时候。一旦我回到普通的美国键盘,i-search按预期工作。我在美国扩展键盘上遇到了同样的异常行为。