在Vim中平滑滚动的最好方法是什么?

Vim中的主要滚动命令是:

> Ctrl-B和Ctrl-F,以及PageUp和PageDown按整页滚动
> Ctrl-U和Ctrl-D认滚动半页
> Ctrl-Y和Ctrl-E滚动一行

我每次都失去前两者的视觉上下文,所以我开发了重复击中后者的不良习惯(Ctrl-Y和Ctrl-E)。

由于目前没有第一方支持平滑滚动,什么是最不反对解决方法/插件

我使用Vim和GVim取决于任务,并很高兴,如果没有一个真正好的黑客为两个工作单独定制它们。鼠标滚轮在GVim中工作得很好,但我正在寻找基于键盘解决方案。

更新:我现在推这个代码,重构有点根据指南在:help write-plugin,到一个 Github repo

使用键盘

这里是我在我的.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中工作。

对我来说,打开鼠标支持允许平滑滚动通过鼠标滚轮。此外,对我来说,平滑滚动是最重要的,当我环顾四周(即在正常模式),而不是当我正在编辑(在插入模式),如果我没有积极编辑,需要我的手保持在键盘总是被删除,所以这个工作得很好。

this question的基础上,似乎有些人需要做一些更多的手动设置,只是简单地打开鼠标(我只是使用set mouse = n):

我的.vimrc有以下几行

set mouse=a
 map <ScrollWheelUp> <C-Y>
 map <ScrollWheelDown> <C-E>

相关文章

解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全...
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的...
      vim正则匹配:空行:/^$/  /^[\t]*$/注释...
$select-editorSelectaneditor.Tochangelater,run'sele...
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下...
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置...