如果一个 Emacs 框架被分割成几个窗口并打开一个新的缓冲区,是否有可能告诉 Emacs 在哪个窗口中打开缓冲区。
特别是,如果一个窗口包含一个 dired 缓冲区,并且我想告诉 Emacs 应该在其他打开的哪个窗口中显示一个新文件。
如果 Emacs 框架是这样分割的:
____________________
| | |
| | |
| A | B |
| | |
| | |
--------------------
| | |
| C | D |
| | |
--------------------
其中 A、B、C 和 D 是窗口。如果 A 包含一个 dired 缓冲区,我可以告诉 Emacs 在窗口 D 的新缓冲区中打开一个新文件吗?
最佳答案
这是另一个答案——
您可以使用 Icicles 做您想做的事.在冰柱模式下,C-x o
, 通常是 other-window
, 是 icicle-other-window-or-frame
.前缀 arg 为它提供了几种替代行为,其中之一(对于 Emacs 24 及更高版本)是选择一个将由下一个缓冲区显示操作使用的窗口(例如 C-x C-f
、 C-x b
)。
如果您使用双普通前缀 arg,就会发生这种情况:C-u C-u C-x o
.调用命令 icicle-choose-window-for-buffer-display
,您当然也可以将其绑定(bind)到任何其他 key 。
您可以按名称选择目标窗口(使用完成或循环等)。
该命令所做的只是设置变量 icicle-next-window-for-display-buffer
到您选择的窗口。 Icicles 建议命令 display-buffer
, switch-to-buffer
, 和 switch-to-buffer-other-window
这样下次调用它们时,它们将使用值为 icicle-next-window-for-display-buffer
的窗口. (在那次调用之后,他们恢复到正常行为。)
这也意味着,如果您有另一种选择窗口的方法,您更喜欢(例如,使用提到的其他方法之一循环 here ),那么您可以修改该方法以设置 icicle-next-window-for-display-buffer
到选定的窗口,以获得相同的效果(在 Icicle 模式下)。 IOW,选择窗口的方式很重要;只需为其设置变量值,下一个缓冲区显示操作将使用它。
关于windows - 告诉 Emacs 在特定窗口中打开新缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24079559/