在Vim中如何滚动(在光标保持固定在同一屏幕位置的同时上下移动屏幕)

时间:2019-11-22 22:05:15

标签: vim cursor screen

在网页上正常滚动时,光标会在屏幕上的同一位置,而屏幕会平滑地上下移动。我想在vim中复制该功能。 Ctrl - Y Ctrl - E 可移动屏幕,但光标不会停留在屏幕上的同一位置,它停留在同一行。

到目前为止,唯一接近的是 Ctrl - U Ctrl - D ,但是这将滚动滚动屏幕的一半值。这将无法平滑滚动。

有内置命令吗?

答案后添加了解决方案: 不,没有默认的方法。但是有这些方便的映射:

request.POST.getlist('phone_number[]')

nnoremap <C-K> k<C-Y>

2 个答案:

答案 0 :(得分:0)

'scroll'选项确定 Ctrl-U Ctrl-D 滚动的行数。 0的默认值为“半屏”;但是如果你

:set scr=1

然后这些命令只会将您移动一行。 (您可以使用:set scr=0恢复为默认值。)

请注意,'scroll'选项是通过为 Ctrl-U Ctrl-D 加上前缀来自动设置的。即如果您执行 1 Ctrl-D ,则每隔 Ctrl-U Ctrl-D 只会移动一个行,直到重置'scroll'

另一种可能性是'scrolloff',它确定窗口中光标上方和下方的最小行数。将其设置为荒谬的数字可确保您的光标始终位于屏幕中央。也就是说,

:set so=999

实际上会将jk转换为您想要的内容。

最后,如果您不喜欢这两种方法的副作用,那么像克里斯蒂安·吉本斯(Christian Gibbons)这样的绑定建议注释中的另一种方法。

答案 1 :(得分:0)

由于没有默认方法,我选择使用

nnoremap <C-K> k<C-Y>

nnoremap <C-J> j<C-E>