windows - 我可以让 emacs grep windows 只使用另一个窗口打开文件吗?

标签 windows emacs find-grep

我面前有 emacs。

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

我用 C-x 1 使它成为唯一的窗口。

如果我单击文件名,窗口会垂直拆分,包含找到的文本的文件会显示在另一个窗口中。

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

到目前为止,还不错......

但是,如果我调整窗口大小,emacs 将周期性地(当我单击时)再次拆分两个窗口之一,使显示难以阅读。然后它将在两个新窗口之间循环打开新文件。有时它会打开更多窗口并使情况变得更糟。如果我关闭这些新窗口中的任何一个,它们就会再次重新打开。

事实上,即使我不调整任何东西的大小,有时也会发生这种不正常的行为。如果我这样做,它似乎会更频繁地发生。

我希望 emacs 停止四处乱窜,只有一个 find-grep 窗口和一个“显示”窗口,并且总是用新文件替换显示窗口。我还希望能够将这些窗口设置为看起来最方便的大小。

有什么办法可以实现吗?

或者任何人都可以给我指点一篇关于整体(替换此窗口的内容/替换不同窗口的内容/通过拆分创建另一个窗口)如何工作的文章,所以我可以去理智地破解它。

最佳答案

简短修复: 尝试这样做

(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

关于windows - 我可以让 emacs grep windows 只使用另一个窗口打开文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9433013/

相关文章:

go - 如何禁用这些工具提示?

emacs - 如何将 ack 与 M-x find-grep 一起使用?

c# - 如何在运行时根据屏幕分辨率自动调整表单窗口大小(设计期间创建的窗口尺寸太大)

c++ - 调用 IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER 时句柄无效

windows - 如何让 win32 控制台识别 ANSI/VT100 转义序列?

emacs - 我可以在 emacs 中编写一个 jar 装的 find-grep 脚本吗?

python - Cmd 和 Git bash 在运行 Python 代码时有不同的结果

emacs - elisp中如何管理底层接口(interface)的变化

emacs - 突出显示 eval-after-load 的错误使用