通过缩小,缓冲区的其余部分被隐藏起来,就好像它们不存在一样。这是一个优势,例如,如果你想替换缓冲区的某个部分中的一个单词,而不影响其他部分,你可以缩小到你想要的部分,替换只在该部分进行,而不影响缓冲区的其余部分。搜索也仅在缩小的区域内工作,而不在外部,因此如果你正在修复文档的一部分,你可以通过缩小到你想要的区域来防止意外地找到不需要修复的部分。
(narrow-to-region
的键绑定是C-x n n。)
然而,缩小会使缓冲区的其余部分变得不可见,这可能会吓到那些不小心调用缩小并认为已删除文件的一部分的人。此外,undo
命令(通常绑定到C-x u)不会取消缩小(也不应该取消),所以如果人们不知道可以使用widen
命令将缓冲区的其余部分恢复为可见状态,他们可能会变得相当绝望。
(widen
的键绑定是C-x n w。)
缩小对Lisp解释器和人类一样有用。通常,Emacs Lisp函数被设计为仅在缓冲区的一部分上工作;或者相反,Emacs Lisp函数需要在已经缩小的整个缓冲区上工作。例如,what-line
函数会在缓冲区存在缩小的情况下移除缩小,并在完成工作后将缩小恢复到原来的状态。另一方面,count-lines
函数使用缩小来限制自己只在其感兴趣的缓冲区部分中运行,然后恢复到先前的情况。