在 Emacs ediff 中,我可以使用v
和V
来上下滚动我同时比较的缓冲区。
然而,我注意到:
- 如果我开始滚动每个缓冲区独立
- 然后将点(光标)放在两个缓冲区的第一行上,
- 尝试使用同时移动它们
v
那么缓冲区不会均匀地滚动(例如,右侧的缓冲区会额外滚动一行)。
我注意到,如果我关闭 ediff 会话并打开一个包含这两个文件的新会话,问题就会消失。
这些文件在各自文件末尾附近有一些实质性差异,但对于前 2K 行左右,它们是相同的。
如果这是一个错误,我会感到非常惊讶,所以一定有一些我不理解的地方。有没有控制滚动的参数?快捷键v
和V
应该使两个缓冲区滚动相同的量,对吗?
我正在比较的文件每行都以CR
LF
.我在下面包含了来自替代编辑器(Notepadd++)的快照:
注意:这是 Emacs 23.3.1(最新的稳定版本)
答案1
Emacs 按屏幕行而不是物理行滚动,因此,如果物理行在一个窗口中占用两个屏幕行(由于环绕),而在另一个窗口中仅占用一个屏幕行(由于该窗口更宽),那么当您滚动时窗口放在一起它们会不同步。如果您遇到这种情况,您可以使用以下方法解决问题
(setq 截断部分宽度窗口 t)
当您从中间分割 Emacs 框架时,这会关闭环绕,因此物理行将在两个窗口中占据一根屏幕行。