Windows 告诉Emacs在特定窗口中打开新缓冲区

Windows 告诉Emacs在特定窗口中打开新缓冲区,windows,emacs,buffer,Windows,Emacs,Buffer,如果一个Emacs帧被分成几个窗口,并且打开了一个新的缓冲区,是否有可能告诉Emacs在哪个窗口打开缓冲区 特别是,如果一个窗口包含一个dired缓冲区,我想告诉Emacs,在其他打开的窗口中,应该显示一个新文件 例如,如果Emacs帧按如下方式拆分: ____________________ | | | | | | | A | B | | | | | |

如果一个Emacs帧被分成几个窗口,并且打开了一个新的缓冲区,是否有可能告诉Emacs在哪个窗口打开缓冲区

特别是,如果一个窗口包含一个dired缓冲区,我想告诉Emacs,在其他打开的窗口中,应该显示一个新文件

例如,如果Emacs帧按如下方式拆分:

____________________
|        |         |
|        |         |
|   A    |    B    |
|        |         |
|        |         |
--------------------
|        |         |
|   C    |    D    |
|        |         |
--------------------

其中A、B、C和D是窗口。如果A包含一个dired缓冲区,我可以告诉Emacs在窗口D的新缓冲区中打开一个新文件吗

其他人可能会给你更直接回答你问题的答案。我的答案是,只需将焦点移动到所需的窗口,然后使用
C-x C-f
或其他方法打开文件或在所选窗口中显示所需的缓冲区

为了直接执行您请求的操作,您无论如何都需要使用调用所需命令的键序列。如果您希望使用通用的命令(例如
查找文件
切换到缓冲区
),则需要使用前缀键或重新调整前缀arg的用途。这通常与切换到窗口然后使用常用命令时的按键次数相同

当然,根据我的建议,您需要一个命令来快速切换到所需的窗口。有各种各样的命令可以让你在窗口之间循环,或者使用补全功能按名称或编号快速选择窗口

这就是我的建议:切换到窗口,然后在那里显示您想要的任何内容,而不是尝试将(a)指定目标窗口与(b)调用显示缓冲区的命令结合起来。瞧,按老规矩做吧:走到窗口,然后在那里展示

当然,如果你真的不想在新显示的缓冲区中结束,你只想把焦点保持在你开始的地方,那么根据我的建议,你需要循环(例如)回到你的开始窗口。从您的描述中不清楚这是否是您的用例。如果是,那么我的解决方案可能没有那么大帮助

但是,即使在这种情况下,也可以将内容拆分:(a)一个命令(仅)指定要用于以下显示缓冲区命令的窗口,以及(b)显示缓冲区命令。照我说的做,第一步只指定目标窗口,而不是切换到目标窗口,第二步使用指定的窗口。(您需要将(a)和(b)定义为一般机制。)

在这种情况下,我的建议也可能不同于其他人的建议,因为它不尝试将窗口选择与显示命令相结合。它们是顺序耦合的,但不是在一个命令中组合。

这里是另一个答案--

你可以用它做你想做的事。在冰柱模式下,
C-x o
,通常是
其他窗口
,是
冰柱其他窗口或框架
。前缀arg为它提供了几种可选行为,其中之一(对于Emacs 24和更高版本)是选择下一个缓冲区显示操作将使用的窗口(例如,
C-x C-f
C-x b

如果使用双普通前缀arg:
C-uc-uc-xo
,就会出现这种情况。这将调用命令icicle choose WINDOWS for buffer display(缓冲区显示),您当然也可以将其绑定到任何其他键

您可以按名称选择目标窗口(使用完成或循环等)

该命令所做的只是将变量
icicle next window for display buffer
设置为您选择的窗口冰柱建议命令
显示缓冲区
切换到缓冲区
,以及
切换到缓冲区其他窗口
,以便下次调用它们时,它们使用
冰柱下一窗口的值作为显示缓冲区
。(调用后,它们会恢复正常行为。)


这也意味着,如果您有另一种选择窗口的方法(例如,使用上述其他方法之一循环),则您可以修改该方法,将显示缓冲区的icicle next window设置为所选窗口,以获得相同的效果(在ICICICLE模式下)。瞧,你怎么选择窗户真的很重要;只需将变量值设置为它,下一个缓冲区显示操作将使用它。

打开要加载缓冲区的窗口,
激活,然后按:

C-x b
您将收到以下提示:

Switch to buffer (default *Buffer List*):

按enter(ret)而不写入任何内容以选择默认值。然后您将在该窗口中找到加载的缓冲区列表。然后选择要加载的一个,您将在同一窗口中找到它。

谢谢。我会试试这个。这个问题特别关注于选择“链接”或“命令”将在哪里打开缓冲区。很明显,可以移动到窗口并直接在那里打开缓冲区。问题是:当我按dired中的“link”(例如)时,如何指定将为将打开的新缓冲区选择哪个窗口?@UndeadKernel:我不确定您所说的问题是否是OP问题。但你的问题的答案是,“链接”调用的任何命令都决定了行为。不多不少。该命令可以执行这个或那个特定的操作,或者它可以提示用户在一些可能的操作中进行选择,或者。。。命令是一个Elisp函数——它可以做函数可以做的任何事情。关键是调用的任何命令(无论是否单击链接)都决定了行为是什么。它可能会给你一些选择,也可能不会。