在 vi/vim 中使用时:set wrap
,将光标移到新行时,整行换行的内容都会放在显示缓冲区中,即使通过显示行 (gj/gk) 而不是实际行 (j/k) 浏览文件也是如此。例如,如果一行换行超过 5 个屏幕行,并且当前超出显示缓冲区,则在导航到此行时缓冲区将跳转 5 行,以强制整行适合屏幕。有没有办法禁用此行为?请注意,set display+=lastline
当换行行因离开该行而被迫离开屏幕时,将允许显示部分行,但这不能解决导航到最初超出缓冲区的行时发生的缓冲区跳转。
澄清:如果上述描述不清楚,其要点是我希望能够在启用换行功能的情况下在 vim 中平滑滚动,以便行将部分显示在屏幕之外,而不是强制全部显示。
答案1
这不是完整的答案,但可能是线索。有scroll
一个选项。该选项的帮助内容如下:
{Vi 稍有不同:'scroll' 给出的是屏幕行数而不是文件行数,换行时会有所不同}
答案2
gk
在正常模式下,您可以使用and gj
(g<up>
或)在换行的显示部分之间跳转g<down>
。这个 vim 维基页面解释如何永久地改变行为。