2012-02-24 46 views
3

我在我面前有emacs。我可以使emacs grep windows只使用其他窗口打开文件吗?

我运行了一个find-grep,它有很多hit,它们都显示在一个窗口中。文件名以绿色显示为超链接。

我做出的唯一窗口,与C-X 1.

如果我点击一个文件名,窗口垂直分割,并用找到的文本文件显示在其他窗口。

如果我点击更多文件名,那么新文件会替换旧文件,这是我想要发生的事情。

到目前为止,一切都很好...

但是如果我调整窗口的大小,然后Emacs会定期(当我点击)再次分裂的两个窗口之一,使显示器难以阅读。然后它会在两个新窗口之间循环打开新文件。偶尔会打开更多的窗户,并使情况变得更糟。如果我关闭这些新窗口中的任何一个,它们就会重新打开。

事实上,即使我不调整任何东西,有时候这种不正当行为也会发生。如果我这样做,它似乎更经常发生。

我想emacs停止乱糟糟,只有一个find-grep窗口和一个'display'窗口,并且总是用新文件替换显示窗口。我也希望能够将这些窗口设置为最方便的尺寸。

有什么办法可以达到这个目的吗?

或者任何人都可以指出我如何整体(取代这个窗口的内容/替换不同窗口的内容/通过分割创建另一个窗口)的作品,所以我可以去破解它的理智。

+0

您似乎只描述了不会出现问题的情况。如果您还详细说明如何重现实际问题,那么问题就会变得更加清晰。 – phils 2012-02-25 02:33:57

+0

对我来说,这真是太棒了。该问题在编辑中丢失了。抱歉。 – 2012-02-27 11:40:32

回答

2

短期的解决办法: 尝试这样做

(setq split-height-threshold nil 
     split-width-threshold nil) 

这将防止从Emacs的自动分割窗口(水平或垂直)。在其他情况下,这可能是不可取的,但这应该可以完成这项工作。尝试一个星期左右,看看它是否会扰乱你的流量。

另外,我发现如果点在一个窗口中,并且我点击了一个链接,该文件将在下一个窗口中打开(如果有的话)。

所以,如果你想在右窗口打开文件(当你有多个窗口时),你可以确保点在你想要的窗口之前的窗口中。

较长的回答:

好的。我能够重现这个问题。事情是显示文件的窗口非常大(宽或高),因为您调整了它的大小,并且Emacs发现宽度或高度大于各自的阈值并同样分割它。所以,我们必须提高门槛或完全禁止行为。

而且,刚刚回答的最后几个问题:

  • 要获取当前窗口 - (selected-window)
  • 为了得到下一个窗口 - (next-window)
  • 要选择一个窗口 - (select-window foo-window)
  • 要获得当前窗口的缓冲区 - (current-buffer)
  • 获取某窗口的缓冲区 - (window-buffer foo-window)
  • 要设置一个缓冲的窗口 - (set-window-buffer foo-window bar-buffer)

我敢肯定,你可以破解使用这些功能结合在一起体面的窗口/缓存管理功能。

您可以使用C-h f获取有关这些功能的更多详细信息。 另请参阅Elisp手册 - http://www.chemie.fu-berlin.de/chemnet/use/info/elisp/elisp_26.html

相关问题