当我水平分割窗口时,我想阻止Vim滚动(如果这是正确的词).
假设我在Vim中编辑了10行文件.我在缓冲区有一个窗口,窗口高40行.两个窗户有足够的空间,一个在另一个的顶部,两个都显示整个缓冲区.让我们说scrolloff设置为4.
当我水平分割窗口时,滚动原始窗口,以便scrolloff在窗口顶部和光标所在的行之间显示精确的线条 - 如果scrolloff窗口顶部和光标线之间有多条线 - - 即使没有必要滚动.
换句话说,如果当我分割窗口时光标位于第1,2,3,4或5行,则原始窗口不会"移动"(好).但是如果光标位于第6行,则窗口会滚动,使第2行成为最顶部的可见行...确保scrolloff第(4)行在光标线上方可见(烦人).类似地,如果当我分割窗口时光标在第7行,则原始窗口滚动到该行3成为最顶部的可见行.等等.
有没有办法配置Vim从不在水平分割时滚动原始窗口?
我想可以映射<C-W>s到一个能够满足我想要的功能,但是如果可能的话,我更愿意通过配置来解决这个问题.
我找到了一个解决方案,从这里借用答案.
在我的.vimrc身上:
nnoremap <C-W>s Hmx`` \|:split<CR>`xzt``
Run Code Online (Sandbox Code Playgroud)
现在,当我将窗口水平分割时<C-W>s,原始窗口根本不会滚动.