更新: のガイドラインに従って多少リファクタリングされたこのコードを:help write-plugin
Githubリポジトリにプッシュしました。
キーボードの使用
ここに私が持っているものがあります.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
特徴:
scroll
Vimオプションのベースをスクロールします。
- カスタマイズ可能なスクロール速度 (コマンドの時間引数を調整し
sleep
ます。私は 10 ミリ秒を使用します)。注: ビデオのフレーム レートを遅くするのと同じように、スムーズ スクロールを遅くしすぎると、スムーズ スクロールではなく、ぎくしゃくしたスクロールになります。しかし、あなたに最適なものは何でも。
- 通常モードまたは挿入モードで動作します。
注^
: コピー アンド ペーストを行うすべてのユーザーは、この文字が制御文字を示していることを覚えておいてください。コピーして貼り付けると無効な結果が生成されるため、手動で入力する必要があります。
^Y
– CTRL-VそれからCTRL-Y
^E
– CTRL-VそれからCTRL-E
ただし、<C-U>
および<Enter>
スタイルの構文は、文字通りこれらの文字として入力されます。map コマンドはそれらをインテリジェントに制御文字に変換します。
マウスの使用
質問では、マウスによるスクロールは GVim でうまく機能すると述べていますが、キーボード ソリューションが必要です。これは、通常の端末 Vim で動作する場合、質問者がマウス ソリューションに興味がある可能性があることを意味します。
私にとっては、マウス サポートをオンにすると、マウス ホイールをスムーズにスクロールできるようになります。また、私にとってスムーズなスクロールは、編集中 (挿入モード) ではなく、周りを見ているとき (通常モード) に最も重要です。キーボードは常に削除されるため、これはうまく機能します。
ただし、この質問に基づいて、単にマウスをオンにするだけでなく、手動でセットアップを行う必要がある人もいるようです (私は を使用しますset mouse=n
)。
私.vimrc
の次の行があります
set mouse=a
map <ScrollWheelUp> <C-Y>
map <ScrollWheelDown> <C-E>