微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在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>

原文地址:https://www.jb51.cc/vim/391741.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐