我可以使用emacs grep windows只使用其他窗口打开文件吗?

时间:2012-02-24 15:09:18

标签: windows emacs find-grep

我面前有emacs。

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

我将它作为唯一的窗口,使用C-x 1。

如果单击文件名,窗口将垂直分割,找到文本的文件将显示在另一个窗口中。

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

到目前为止,非常好......

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

事实上,即使我没有调整任何大小,有时也会出现这种不正常的行为。如果我这样做,似乎更经常发生。

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

有没有办法实现这个目标?

或者任何人都可以指点我一篇关于如何整体(替换这个窗口的内容/替换不同窗口的内容/通过拆分创建另一个窗口)的东西的作品,所以我可以去理解它。 / p>

1 个答案:

答案 0 :(得分: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