我喜欢8左右的滚动边距。这意味着当光标位于顶部或底部的8行以内时,缓冲区将开始滚动。然而,这种方案不能很好地与eshell和ansi术语缓冲区、isql缓冲区或任何可能与emacs一起使用的REPL缓冲区配合使用。在任何一个缓冲区中,当一个人做任何事情时,它会立即向上滚动缓冲区,使缓冲区底部和输入行之间有8行,这使得在emacs中使用任何类似终端的缓冲区在最好的情况下都很尴尬,在最坏的情况下也不可用,这取决于情况。
似乎没有缓冲区能够识别滚动边距变量,除非它是全局的。因此,虽然我可以在不同的模式下使用钩子将变量设置为不同的值,但它会影响我所有的打开缓冲区。
假设我正在编辑一些代码。我决定在壳里做一些事情。我的shell模式挂钩将滚动边距设置为0(这样它们就可以使用了)。然后,所有缓冲区的滚动边距都设置为0,这使得在我的编码缓冲区中滚动很困难。但如果我打开一个新的编码缓冲区,它会将我的滚动边距设置回8。然后,我的shell缓冲区很尴尬或不可用,因为每当它们从命令中获得焦点或显示输出时,它会立即向上滚动8个空格。
除了在全局范围内为所有缓冲区保持0的滚动余量之外,还有什么解决方案可以解决这个问题吗?
将注释转换为答案。在钩子中使用缓冲区局部变量。