Magit最近获得了诸如此类的支持,但是该功能仍然有些粗糙,必须显式启用。
类似的功能已经存在很长时间了-当您在日志缓冲区中将一个提交移到另一个提交时,并且同一框架中的另一个窗口是存储库的修订缓冲区,然后刷新该缓冲区以显示该提交而不是它的任何提交以前显示。
直到最近,当您第一次从一个提交移到另一个提交时,才创建修订缓冲区。我已经更改了该行为,现在修订缓冲区仅被更新。如果同一帧中没有窗口已显示该缓冲区,则在日志中移动将不再导致该缓冲区显示在某些新窗口或以前显示某些其他缓冲区的现有窗口中。
因此,现在您必须按SPC一次以显示修订缓冲区。只有这样,当您在日志缓冲区中移动时,它才会开始更新。
如果您不希望更新修订缓冲区,请执行以下操作:
(remove-hook 'magit-section-movement-hook
'magit-log-maybe-update-revision-buffer)
另一方面,如果您还希望在状态缓冲区中移动时修订版本缓冲区,请使用以下命令:
(add-hook 'magit-section-movement-hook
'magit-status-maybe-update-revision-buffer)
现在可以以类似的方式自动更新Blob缓冲区。首先添加:
(add-hook 'magit-section-movement-hook
'magit-log-maybe-update-blob-buffer)
也许还有:
(add-hook 'magit-section-movement-hook
'magit-status-maybe-update-blob-buffer)
然后,在日志(或状态)缓冲区内部,按RET以显示或更新修订缓冲区,并切换到该缓冲区。移至您感兴趣的文件,然后RET再次按。您现在位于“ blob-visiting”缓冲区中,该缓冲区类似于文件访问缓冲区,除了它不访问工作树中的文件而是访问某些提交中的文件之外。
切换回日志(或状态)缓冲区,然后移至另一个提交。Blob缓冲区正在更新。
请注意,显示另一个Blob实际上不会重用现有的Blob缓冲区。相反,它将创建一个访问该Blob的新缓冲区,然后在先前显示另一个Blob缓冲区的窗口中显示该缓冲区。该其他缓冲区没有被删除,不幸的是,这意味着很多缓冲区可以在短时间内累积。我之前提到过,这将是那些粗糙的边缘之一。按下qBlob缓冲区确实会将其删除,因此您可以通过转到用于显示各种Blob缓冲区的窗口进行清理,并一直按q直到删除所有缓冲区为止。
另外,可以使用p和从Blob缓冲区中导航到下一个或上一个Blob n。我认为在大多数情况下,您是从最近的Blob开始,然后使用移回旧的Blob p。如果这样做,然后又想朝另一个方向移动,建议您使用qkill杀死当前缓冲区,从而移至上一个缓冲区,即下一个 blob。
另外请注意,您不必先访问修订版就可以访问Blob。您也可以M-x magit-find-file RET <revision> RET <file> RET
直接使用,但是我发现不太方便。