在vim中,当启用换行时,如何按屏幕行连续滚动?

vtwuwzda  于 2023-01-13  发布在  其他
关注(0)|答案(3)|浏览(152)

我可以通过设置display=lastline来使窗口底部显示部分行
是否有类似的选项允许在窗口顶部显示部分行?
如果没有这个功能,当显示的最上面的文件行被 Package 成多个屏幕行时,我的vim仍然会滚动(向下)超过1个屏幕行。
例如,在下面的场景中,当我按C-E键时,我的vim会向下滚动3个屏幕行。有没有办法让它只滚动1个屏幕行,这样只有第1行的前两个单词被隐藏,但后面的3个单词仍然显示?这对编辑长段落文本非常有用。
注意:我指的是整个屏幕的滚动,而不是光标的移动。

------------------
1 abcdefg abcefg
  abcasdfsa sdfsf
  sdfc
2 adfadf
3 adfadf
4 adfadf
------------------
pprl5pva

pprl5pva1#

我认为不可能完全按你的要求去做。
下面是我键入:help CTRL-E时得到的描述

CTRL-E
CTRL-E                      Scroll windows [count] lines downwards in the buffer.
                            Mnemonic: Extra lines.

请注意,虽然它说它正在滚动 * window *,但它也提到它正在滚动缓冲区中的行。实际上,您一次只滚动一行(换行)。
我不认为还有别的办法。
我可以通过设置display = lastline来使窗口底部显示部分行
我认为display=lastline是一个错误的解决方案-你仍然滚动相同的量,你只是有更多的可见性。

    • 解决此问题的真正方法是 * 禁用换行 *
:set nowrap
    • 编辑**

一些相关的线程显示"滚动屏幕行"功能正在考虑中,但需要一段时间才能实现:

omqzjyyz

omqzjyyz2#

对于任何人阅读此线程:
Vi stackexchange上的这个线程为跨换行的可视滚动提供了一个稍微有点笨拙(但可用)的解决方案。

uyhoqukh

uyhoqukh3#

现在有一个内置的选项:

'smoothscroll' 'sms'    boolean  (default off)
                        local to window
        Scrolling works with screen lines.  When 'wrap' is set and the first
        line in the window wraps part of it may not be visible, as if it is
        above the window. "<<<" is displayed at the start of the first line,
        highlighted with hl-NonText.
        NOTE: only partly implemented, currently works with CTRL-E, CTRL-Y  
        and scrolling with the mouse.

相关问题