我可以在一个文件上有两个视图吗?一个可以缩小吗?


13

我正在编辑一些文件abc.org,并调用org-narrow-to-block来缩小到要编辑的代码块。对于编辑过程,我必须访问abc.org的另一部分,只想在另一个窗口中显示它。因此,我执行“ Cx 2”,发现该窗口显示了abc.org,但同时也缩小了范围。文件上可以有两个“视图”吗?一缩小,一缩小?

我检查了七个标记为变窄的问题,但没有找到类似的问题。

Answers:


15

我认为您正在寻找clone-indirect-buffer-other-windowC-x 4 c默认情况下绑定)。

请注意,这将建立缓冲区的链接克隆,因此您需要记住要杀死克隆的缓冲区以及窗口,以避免累积越来越多具有相同内容的缓冲区。


4

这正是库Narrow Indirectnarrow-indirect.el)的目的。

它为您提供了缩小命令,这些命令创建了一个间接缓冲区,该间接缓冲区是当前缓冲区的副本,并且缩小到其特定部分。您可以缩小到当前定义,活动区域或当前页面。建议的键绑定:

(define-key ctl-x-4-map "nd" 'ni-narrow-to-defun-other-window)
(define-key ctl-x-4-map "nn" 'ni-narrow-to-region-other-window)
(define-key ctl-x-4-map "np" 'ni-narrow-to-page-other-window)

对于它创建的间接缓冲区,它提供了两种方法来区分间接缓冲区和非间接缓冲区:

  • 间接缩小的缓冲区的缓冲区名称以可以使用option设置的前缀开头ni-buf-name-prefix。默认值为I-

  • 间接缩小的缓冲区的名称在模式行中使用face ni-mode-line-buffer-id而不是face 突出显示mode-line-buffer-id。(要关闭此功能,只需将前者自定义为与后者相同即可。)

这样的间接缓冲区为您提供了一部分缓冲区甚至整个缓冲区(使用C-x h C-x 4 n n)的不同视图。它始终具有相同的文本和文本属性,但是在其他方面则非常独立。

特别是,您可以杀死一个间接缓冲区而不影响其基本缓冲区。您可能想要杀死间接变窄的缓冲区,而不是扩大它们。

请参阅Emacs手册,节点间接缓冲区


4

您尝试过C-x C-c borg-tree-to-indirect-buffer)吗?它创建一个间接(新)缓冲区,并将其范围缩小到当前子树,而其余文档保持原样。


请注意,默认情况下,任何时候都仅维护一个间接缓冲区。但是,可以通过设置org-indirect-buffer-display为来更改new-frame
Christoph
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.