对于某些任务,我更喜欢使用单个大文件,而不是将项目(例如:LaTeX 报告、中型 Python 脚本)拆分为单独的小文件,例如,为了更方便搜索和搜索替换。但是对于编辑,通常最好对项目的不同部分有单独的视图,这有利于使用几个小文件。
emacs 是否有某种模式/包允许编辑文件的各个部分,就像它们是单独的文件一样,同时保持缓冲区与文件的所有其他视图同步?我知道clone-indirect-buffer
,但虽然它实现了部分意图,但我更喜欢一种将间接缓冲区限制到文件特定部分的方法。例如,想想 org-modes,C-c '
但使用间接缓冲区实现。理想情况下,实现将支持一些语法来定义部分。
我认为 LEO 编辑器大致是根据我想要的 emacs 概念构建的,尽管我从未尝试过它(在我的系统上不起作用)。
答案1
提供此类行为的一个库是狭义间接(narrow-indirect.el
)。它为您提供了缓冲区的一部分,甚至整个缓冲区的不同视图(使用C-x h C-x 4 n n
)。
它始终具有相同的文本和文本属性,但除此之外,它相当独立。特别是,您可以终止间接缓冲区而不影响其基本缓冲区。您可能希望终止间接缩小的缓冲区,而不是扩大它们。
间接缓冲区的用途比您想象的要多。例如,您可以使用从 Dired 缓冲区的部分内容中获取的克隆,为您提供有用的(活动)目录列表视图。只有少数键/命令(例如g
更新列表)不起作用,因为它们依赖于整个 Dired 缓冲区的视图。进行实验,您无疑会发现间接缓冲区的有趣新用途。
另请参阅 Emacs 手册、nodeIndirect Buffers
。