如何在 Vim 中滚动(移动屏幕 up/down 而光标保持固定在同一屏幕位置)
How to scroll (move screen up/down while cursor remains fixed at same screen position) in Vim
在网页上正常滚动时,光标保持在屏幕上的同一位置,同时屏幕平滑移动up/down。我想在 vim 中复制该功能。 Ctrl-Y和Ctrl-E移动屏幕但光标不会停留在屏幕上的同一位置,而是停留在同一行。
到目前为止,唯一接近的是Ctrl-U和Ctrl -D,但这会按行滚动屏幕一半的值。这不会启用平滑滚动。
有内置命令吗?
答案后添加的解决方案:
不,没有默认的方法来做到这一点。但是有这些方便的映射:
nnoremap <C-K> k<C-Y>
和
nnoremap <C-J> j<C-E>
'scroll'
选项决定Ctrl-U和Ctrl-D滚动的行数。 0
默认为"half a screen";但如果你
:set scr=1
那么这些命令只会让你移动一行。 (您可以使用 :set scr=0
恢复默认值。)
请注意,'scroll'
选项是通过在 Ctrl-U 或 Ctrl-D 前加上计数自动设置的。 IE。如果你做 1Ctrl-D,每隔 Ctrl-U 或 Ctrl -D 只会移动一行,直到 'scroll'
被重置。
另一种可能性是'scrolloff'
,它确定window中光标上方和下方的最小行数。将它设置为一个荒谬的数字将确保您的光标始终位于屏幕中央。也就是说,
:set so=999
实际上会将 j
和 k
转换为您想要的。
最后,如果您不喜欢这两种方法的副作用,像 Christian Gibbons 这样的绑定在评论中建议是另一种方法。
由于没有默认方法,我选择使用
nnoremap <C-K> k<C-Y>
和
nnoremap <C-J> j<C-E>
在网页上正常滚动时,光标保持在屏幕上的同一位置,同时屏幕平滑移动up/down。我想在 vim 中复制该功能。 Ctrl-Y和Ctrl-E移动屏幕但光标不会停留在屏幕上的同一位置,而是停留在同一行。
到目前为止,唯一接近的是Ctrl-U和Ctrl -D,但这会按行滚动屏幕一半的值。这不会启用平滑滚动。
有内置命令吗?
答案后添加的解决方案: 不,没有默认的方法来做到这一点。但是有这些方便的映射:
nnoremap <C-K> k<C-Y>
和
nnoremap <C-J> j<C-E>
'scroll'
选项决定Ctrl-U和Ctrl-D滚动的行数。 0
默认为"half a screen";但如果你
:set scr=1
那么这些命令只会让你移动一行。 (您可以使用 :set scr=0
恢复默认值。)
请注意,'scroll'
选项是通过在 Ctrl-U 或 Ctrl-D 前加上计数自动设置的。 IE。如果你做 1Ctrl-D,每隔 Ctrl-U 或 Ctrl -D 只会移动一行,直到 'scroll'
被重置。
另一种可能性是'scrolloff'
,它确定window中光标上方和下方的最小行数。将它设置为一个荒谬的数字将确保您的光标始终位于屏幕中央。也就是说,
:set so=999
实际上会将 j
和 k
转换为您想要的。
最后,如果您不喜欢这两种方法的副作用,像 Christian Gibbons 这样的绑定在评论中建议是另一种方法。
由于没有默认方法,我选择使用
nnoremap <C-K> k<C-Y>
和
nnoremap <C-J> j<C-E>