Vim:检查下面的空白行,使光标位置保持在中心位置

时间:2013-09-26 06:10:23

标签: vim

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

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

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

1 个答案:

答案 0 :(得分:1)

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

:echo winheight(0) - winline()

所以,如果光标只在最后5行中跳到中间,你可以使用:

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

我不完全了解您使用空白行记住了哪种情况,但您可以使用empty(getline(lnum))检查各行。此外,内置函数prevnonblank() / nextnonblank()可能很有用。