![在新/相邻窗口中的 emacs 中打开可点击文本](https://linux22.com/image/50196/%E5%9C%A8%E6%96%B0%2F%E7%9B%B8%E9%82%BB%E7%AA%97%E5%8F%A3%E4%B8%AD%E7%9A%84%20emacs%20%E4%B8%AD%E6%89%93%E5%BC%80%E5%8F%AF%E7%82%B9%E5%87%BB%E6%96%87%E6%9C%AC.png)
目前我有一个模式(准确地说是magit),当我有可点击的文字将缓冲区切换到文件。不过,有时我更喜欢在新窗口或相邻窗口中打开。有可能做到吗?
附言。我所说的窗口是指 Emacs 窗口而不是 Emacs 框架。
答案1
在magit-status
缓冲区中你可以通常通过 实现这一点C-u RET
。
相同通常适用于info-mode
和中的活动链接help-mode
。
但在 Emacs 中没有通用的方法可以做到这一点。作为您链接到的文档解释说,主要模式将自行决定如何响应可点击文本上的操作。
处方是:
实现链接涉及三个单独的步骤: (1) 当鼠标移到链接上时指示可点击性; (2) 使该链接上的 Mouse-2 执行某些操作; (3)设置跟随链接条件,使得链接服从鼠标1点击跟随链接。
然而,这不是必需的协议:
- 没有任何内容表明需要全面实施,
- 此外,不强制要求在激活时始终响应访问缓冲区,
- 也不强制要求以相同的方式处理给定缓冲区中的所有链接;
- 因此就是上面的“通常”。
您可以通过几个示例轻松观察到行为差异:
magit-status
缓冲区根本不响应鼠标点击,只响应“键盘点击RET
”info-mode
只为“键盘点击”提供“在新窗口中打开”行为,但不为鼠标点击提供“在新窗口中打开”行为。magit-status
仅在访问文件时提供此行为,但在“访问”提交时不提供此行为。此外,“访问”(点击键盘)提交也会产生副作用,即首先检查它们,然后显示它们。- 在
describe-function
缓冲区中,指向源文件的链接始终打开新帧,没有其他选择。 - 在
describe-function
缓冲区中,指向其他函数的链接始终加载当前缓冲区中的新内容,没有其他选择。 - 在
magit
历史缓冲区和describe-function
缓冲区中,[前进]`help-mode
按钮[back]' and
始终更新当前缓冲区。 - 在
describe-mode
缓冲区中,指向“启用次要模式”交叉引用的链接只需在当前窗口中向下滚动即可。 dired-mode
缓冲区不突出显示活动链接。
所有这些的实现细节可能相当复杂,但为了说明其中没有真正的魔力,请比较一下如何info-mode
以不同方式处理鼠标点击和键盘点击(比较defun Info-mouse-follow-nearest-node (click)
和defun Info-follow-nearest-node (&optional fork)
.
答案2
编辑:解决方案是安装组织玛吉特包裹。然后,您可以使用以下命令(来自 OrgMode)强制链接在新窗口中打开
Ctrl-u Ctrl-c Ctrl-o
要在新窗口中打开文件和缓冲区:
您可以使用以下命令在新窗口中打开缓冲区
Ctrl-x 4 b
请注意,您还可以使用类似的命令在新窗口中打开文件
Ctrl-x 4 f