1

当我开始使用新程序时,光标最终会到达屏幕底部。我希望它保持在中心,我在 vimrc 文件中进行了以下管理。

autocmd InsertEnter * :set scrolloff=9999
autocmd InsertLeave * :set scrolloff=0

但是当我对代码进行小的更改时,光标会跳到屏幕中间,这有点烦人。我想知道,在 vim 执行上述命令之前,如何检查下一个空行(比如 5)的条件,即set scrolloff. 在编写新代码时,我可以从底部的 5 个空行开始。

4

1 回答 1

1

要确定光标距离当前窗口底部的行数,可以使用

:echo winheight(0) - winline()

因此,如果光标位于最后 5 行,则仅使光标跳到中间,您可以使用:

autocmd InsertEnter * if winheight(0) - winline() < 5 | set scrolloff=9999 | endif

我不完全理解您对空白行的想法是什么,但您可以使用empty(getline(lnum)). 此外,内置函数prevnonblank()/nextnonblank()可能很有用。

于 2013-09-26T06:43:28.577 回答