2013-05-15 61 views

回答

2

使用以下ex命令。它使用变量lines来显示窗口中显示的行数,并计算出第三行。

:execute "set scroll=" .&lines/3 

编辑:当调整窗口滚动值不会改变,所以下面的自动命令添加到您的vimrc来解决它:

:au VimResized * execute "set scroll=" . &lines/3 
+0

这会做的!谢谢 – alxndr

+2

@Alexander,'&lines'是Vim作为一个整体的高度,而不是当前窗口的高度。使用'winheight('。')'来获得当前窗口的高度。 – romainl

2

scroll的默认值是动态的 - 可能在另一个窗口中为12,在另一个窗口中为21 - 但是比例50%是硬编码的。 AFAIK,用于动态计算scroll的比例不能修改。

你可以像这样的东西很容易地改变scroll值:

execute "set scroll=" . winheight('.')/3 

现在,你必须找到如何,何时何地使用该片段。一个autocmd似乎是一个不错的选择选择,但我们应该使用什么事件? WinEnter/WinLeaveCursorMove?还有别的吗?

也许一个简单的映射,覆盖默认?例如:

nnoremap <C-d> :execute "normal! " . winheight('.')/3 . "^D"<CR> 
" type <C-v> then <C-d> to produce ^D 
相关问题