Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim:检查下面是否有空行,以使光标位置保持在中心_Vim - Fatal编程技术网

Vim:检查下面是否有空行,以使光标位置保持在中心

Vim:检查下面是否有空行,以使光标位置保持在中心,vim,Vim,当我开始一个新程序时,光标最终到达屏幕底部。我希望它保持在中心,我在vimrc文件中管理了以下内容 autocmd InsertEnter * :set scrolloff=9999 autocmd InsertLeave * :set scrolloff=0 但是当我对代码做一些小的修改时,光标会跳到屏幕的中间,这有点烦人。我想知道,在vim执行上述命令之前,如何检查下一个空行(比如5)的条件,即set scrolloff。在编写新代码时,我可以从底部的5行空白开始。要确定光标离开当前窗口底

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

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

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

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

:echo winheight(0) - winline()
因此,要仅在光标位于最后5行时使光标跳到中间,可以使用:

autocmd InsertEnter * if winheight(0) - winline() < 5 | set scrolloff=9999 | endif
如果winheight(0)-winline()<5 |设置scrolloff=9999 | endif
我不完全理解你在空格中有什么样的条件,但是你可以用“代码>空”(GETLIN(LNUM))<代码>检查单行。此外,内置函数
prevnonblank()
/
nextnonblank()
可能很有用。

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

:echo winheight(0) - winline()
因此,要仅在光标位于最后5行时使光标跳到中间,可以使用:

autocmd InsertEnter * if winheight(0) - winline() < 5 | set scrolloff=9999 | endif
如果winheight(0)-winline()<5 |设置scrolloff=9999 | endif
我不完全理解你在空格中有什么样的条件,但是你可以用“代码>空”(GETLIN(LNUM))<代码>检查单行。此外,内置函数
prevnonblank()
/
nextnonblank()
可能很有用。

当您知道要开始使用新代码而不是一些复杂的方案使其自动运行时,映射
scrolloff=9999
并按下该键不是更容易吗?这是一个更简单的选项,但是我想我会同意@IngoKarkat给出的解决方案,当你知道你将开始使用新代码而不是一些复杂的方案使其自动化时,映射
scrolloff=9999
并点击该键不是更容易吗?这是一个更简单的选择,但我想我会同意@IngoKarkat给出的解决方案