Vimの主なスクロールコマンドは次のとおりです。
前者の2つは視覚的なコンテキストを毎回失うため、後者にぶつかるという悪い癖をつけました(Ctrl-Y そして Ctrl-E)繰り返し。
現在、スムーズスクロールのファーストパーティサポートはないため、最も好ましくない回避策/プラグインは何ですか?
私はタスクに応じてVimとGVimの両方を使用しますが、両方に有効なハックが実際にない場合は個別にカスタマイズできます。マウススクロールホイールはGVimでうまく機能しますが、キーボードベースのソリューションを探しています。
Update:私はこのコードをプッシュしました。: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
オプションのベースをスクロールします。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>
Vimのtips.txtには簡単なリマップハックがあります。
Smooth scrolling *scroll-smooth*
If you like the scrolling to go a bit smoother, you can use these mappings:
:map <C-U> <C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y>
:map <C-D> <C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E>
似たようなものを投稿しました here ですが、基本的には terryma/vim-smooth-scroll と呼ばれる、スクロールに使用できる素晴らしいプラグインがあります。非常に素晴らしくスムーズなスクロールを提供します。
インストールはとても簡単です:
1 Vundle を使用しているので、これを。vimrc.bundlesに追加しました:
Bundle terryma/vim-smooth-scroll
2016年4月29日現在入手可能なVundleの最新バージョンでは、これを。vimrcに入れることができます。
Plugin 'terryma/vim-smooth-scroll'
2 ドキュメントに記載されているように、3つの引数を設定できます:distance、durationおよびspeed。
私はこれを私の。vimrcファイルで使用しています:
noremap <silent> <c-b> :call smooth_scroll#up(&scroll*2, 10, 4)<CR>
noremap <silent> <c-f> :call smooth_scroll#down(&scroll*2, 10, 4)<CR>
恥知らずなプラグインですが、スクロールアニメーションの距離、速度、持続時間を簡単に調整できるプラグインをここで作成しました。 https://github.com/terryma/vim-smooth-scroll
これは完全にスムーズなスクロールではありませんが、ページをジャンプするときにコンテキストを失わないように処理する方法です。
so = 7に設定
'scrolloff' 'so'数値(デフォルトは0)グローバル
{Viにはない}
カーソルの上下に保持する最小画面行数。これにより、作業している場所の周囲のコンテキストが表示されます。非常に大きな値(999)に設定すると、カーソル行は常にウィンドウの中央になります(ファイルの先頭または末尾、または長い行が折り返される場合を除く)。水平スクロールについては、「sidescrolloff」を参照してください。注:「compatible」が設定されている場合、このオプションは0に設定されます。
私は、キーボードリピートを非常に高速、約120文字/秒に設定し、遅延を小さくしています。次に、4jと4kにマッピングし、カーソルを上下に動かすjとkを使用してソースコードを上下にナビゲートします。しかし、ここに良い部分があり、これはWindowsではなくLinuxで機能します。何年もの間、X11のキーボード入力は、jを押したままにするとj文字を出力し始めるように動作します。しかし、その後jを押し続けてからctrlキーも押すと、Xキーはjキーを再度押すことなくc-j文字の出力を開始します。その後、ctrlキーを離してもjを押し続けると、X11は引き続きjを入力し続けます。そのため、jによりカーソルの動きがスムーズになり、下方向に滑らかになります。定期的にctrlを押すと、jを放すことなくブースト、衝撃を与えることができます。
また、Devinが行うことを行い、scrolloffsetを5に設定します。
最後に、ctrlとcap lockを交換します。 ctrlキーのデフォルトの位置は完全に遅らせられています(違反は意図されていません)。左手を回転させる必要があります。私はほとんどキャップロックを使用しないので、それらを交換します。それから、私の左のピンクの指は、ヨガの動きなしでctrlキーに到達できます。
これらのことは何年もの間私のために働いてきました。私はvimのみを使用し、gvimは使用しません。
プラグイン cskeeters/vim-smooth-scroll はスムーズなスクロールをサポートし、設定は不要です。 zt
、zz
、およびzb
によるスムーズなスクロールをサポートします。 terrymaのプラグイン のフォークです。一部のオープンプルリクエストが適用されています。
このプラグイン 「accelerated-smooth-scroll」と呼ばれる(「スムーズなスクロールを加速するためのVimプラグイン(<C-D>/<C-U>
、<C-F>/<C-B>)
")。たとえば、次の行を.vimrcに追加することにより、Vundleで使用できます。
Plugin 'yonchu/accelerated-smooth-scroll'
次に、Vimを再起動し、:PluginInstall
コマンド、次にVimを再起動して、 <C-D>
(Ctrl+D)および <C-O>
(Ctrl+O)通常のコマンド。
悲しいことに、このプラグインは、私が望んでいたものの代わりにカーソルも移動します。 <C-E>
そして <C-Y>
コマンド。