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