在vim中自然滚动过去最后一行的末尾

Dan*_*ous 6 vim vimrc

我有点 vim 新手,但我很难找到资源来帮助我解决这个问题。

当我将光标移动到文件底部时,我希望它继续越过最后一行,最好是直到最后一行位于我的窗口顶部,但无限期也可以。我目前的解决方案包括放入set scrolloff=20我的~/.vimrc然后做G+zz以达到底部。但是如果我向上和向下滚动,我会再次被粘在底部的最后一行。

我知道因为文件后面没有换行符,所以它实际上没有任何内容可以滚动,但是令人讨厌的是,我无法在窗口中间的底线编辑我的文件。

所以最终我希望当我处于底线时我可以按住j它并且它会向下滚动。有没有办法做到这一点?

cra*_*150 2

我不认为这种行为有内置选项,但是在配置中使用一些键绑定,您可以将光标所在的行永久保留在中间(文件的前几行除外):

set scrolloff=99999

nnoremap <C-U> 11kzz
nnoremap <C-D> 11jzz
nnoremap j jzz
nnoremap k kzz
nnoremap # #zz
nnoremap * *zz
nnoremap n nzz
nnoremap N Nzz
nnoremap gg ggzz
nnoremap G Gzz
nnoremap gj gjzz
nnoremap gk gkzz
Run Code Online (Sandbox Code Playgroud)

这映射了要zz在当前行之后执行并将屏幕居中的常见动作。请注意,这可能会导致速度较慢的终端(例如通过 ssh)闪烁,因为屏幕位置在再次居中之前实际上会跳回来。