> Ctrl-B和Ctrl-F,以及PageUp和PageDown按整页滚动
> Ctrl-U和Ctrl-D默认滚动半页
> Ctrl-Y和Ctrl-E滚动一行
我每次都失去前两者的视觉上下文,所以我开发了重复击中后者的不良习惯(Ctrl-Y和Ctrl-E)。
由于目前没有第一方支持平滑滚动,什么是最不反对的解决方法/插件?
我使用Vim和GVim取决于任务,并很高兴,如果没有一个真正好的黑客为两个工作单独定制它们。鼠标滚轮在GVim中工作得很好,但我正在寻找基于键盘的解决方案。
使用键盘
这里是我在我的.vimrc:
function SmoothScroll(up) if a:up let scrollaction="^Y" else let scrollaction="^E" endif exec "normal " . scrollaction redraw let counter=1 while counter<&scroll let counter+=1 sleep 10m redraw exec "normal " . scrollaction endwhile endfunction nnoremap <C-U> :call SmoothScroll(1)<Enter> nnoremap <C-D> :call SmoothScroll(0)<Enter> inoremap <C-U> <Esc>:call SmoothScroll(1)<Enter>i inoremap <C-D> <Esc>:call SmoothScroll(0)<Enter>i
特征:
>在Vim滚动选项的基础上滚动。
>可定制的滚动速度(调整睡眠命令的时间参数;我使用十毫秒)。注意:就像减慢视频的帧速率一样,如果你减慢平滑滚动太多,将会是颠簸滚动,而不是平滑滚动。但任何对你最好的。
>在正常或插入模式下工作。
注意:所有的复制和粘贴,记住,^字符表示控制字符;复制粘贴将产生无效的结果,这些必须手动输入!
> ^ Y – CTRL-V,然后CTRL-Y
> ^ E – CTRL-V,然后CTRL-E
然而,< C-U>和< Enter>样式语法字面上键入这些字符; map命令将它们智能地转换为控制字符。
使用鼠标
这个问题提到使用鼠标滚动在GVim中效果很好,但是需要一个键盘解决方案。这暗示了asker可能对鼠标解决方案感兴趣,如果它在常规终端Vim中工作。
对我来说,打开鼠标支持允许平滑滚动通过鼠标滚轮。此外,对我来说,平滑滚动是最重要的,当我环顾四周(即在正常模式),而不是当我正在编辑(在插入模式),如果我没有积极编辑,需要我的手保持在键盘总是被删除,所以这个工作得很好。
在@L_502_1@的基础上,似乎有些人需要做一些更多的手动设置,只是简单地打开鼠标(我只是使用set mouse = n):
我的.vimrc有以下几行
set mouse=a map <ScrollWheelUp> <C-Y> map <ScrollWheelDown> <C-E>