加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 16:36:51 所属栏目:安全 来源:网络整理
导读:Vim中的主要滚动命令是: Ctrl-B和Ctrl-F,以及PageUp和PageDown按整页滚动 Ctrl-U和Ctrl-D默认滚动半页 Ctrl-Y和Ctrl-E滚动一行 我每次都失去前两者的视觉上下文,所以我开发了重复击中后者的不良习惯(Ctrl-Y和Ctrl-E)。 由于目前没有第一方支持平滑滚动,
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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读