Answers:
您可以在多个窗口中打开同一缓冲区(该窗口可以分布在不同的帧中),但这不是很方便。每个窗口都有其自己的点,但是它们都共享标记,文件模式,缩小和其他特征,因为除了该点之外,几乎所有特征都与缓冲区绑定。另外,如果您碰巧在一个窗口中访问了另一个缓冲区,则将丢失文件中的位置。
您可以创建一个间接缓冲区,该缓冲区具有自己的点,标记,模式等,但与原始缓冲区的内容相同(并且将两个缓冲区中的任何一个写入到同一文件中)。要创建第二个缓冲区,它是当前缓冲区的副本,请运行M-x clone-indirect-buffer RET
。要在其他窗口中打开第二个缓冲区,可以键入C-x 4 c
。
C-x 4 c
run clone-indirect-buffer-other-window
,因此将使用它代替clone-indirect-buffer
,而不遵循该命令。但是,在我的系统上,这两个命令似乎执行相同的操作。
C-x 4
是Windows的前缀,c
是clone的前缀。如果愿意,可以定义其他绑定。C-x c
在默认配置中未使用,如果您不担心意外击中,则可以使用该选项C-x C-c
。我定义C-x 5 c
了在我的init文件中克隆一个新框架。
分屏模式:其中ctrl+ x表示按住ctrl键并输入x。然后输入以下数字。
ctrl+ x2(水平分割)
要么
ctrl+ x3(垂直分割)
然后,您可以在同一个文件上独立滚动它们,也可以在其中一个文件中打开另一个缓冲区。
返回单一视图类型
ctrl+ x1
如果您愿意,可以根据需要将每个屏幕(部分)分割多次。首先选择要分割的画面,然后在其上进行水平或垂直分割。
C-x o
运行other-window
并循环。(使用emacs配置,其中窗口管理器窗口称为框架,其中的单独面板称为窗口(我知道,我知道,但我对此不负责)。)
Emacs偏向于窗格(窗口),而不是框架。通常希望在另一个框架中打开同一缓冲区,而不仅仅是在同一框架中打开另一个窗口。但C-x 5 c
默认情况下未绑定。这段代码定义了缺少的clone-indirect-buffer-other-frame
功能:
(global-set-key [?\C-x ?5 ?c]
'(lambda(newname display-flag)
"Like `clone-indirect-buffer-other-window' but display in another frame."
(interactive
(progn
(if (get major-mode 'no-clone-indirect)
(error "Cannot indirectly clone a buffer in %s mode" mode-name))
(list (if current-prefix-arg
(read-buffer "Name of indirect buffer: " (current-buffer))) t)))
(save-window-excursion
(let ((newbuf (clone-indirect-buffer newname display-flag)))
(switch-to-buffer-other-frame newbuf)
)
)
)
)