accelerated-smooth-scroll という Vimプラグイン を作った (Vim Advent Calendar 2012, 167日目)
Vim Advent Calendar 2012 の167日目の記事です。
前回(166日目)の記事は @deris0126 さんの Vimでパターン検索するなら知っておいたほうがいいこと - derisの日記 でした。
先日、Chrome拡張 Vimmers follow status を作ったのをきっかけに Vimmersページ に登録して頂いたので、これは VAC にも参加せねばと思い、参加させて頂きました。
今回は、GW中に作った Vimプラグイン accelerated-smooth-scroll のご紹介です。
(調べた限りでは類似のプラグインはなかったみたいですが、もしあったらごめんさない。)
accelerated-smooth-scrollとは?
名前の通り、smooth scroll に加速機能をつけた vimプライン です。
C-d/C-u による半ページ移動、C-f/C-b による1ページ移動の動作を置き換え、スムーズな画面移動を行いつつ、連続スクロール時には段々加速していくというものです。
長らく vim-scripts/Smooth-Scroll というプラグインを使用していたのですが、早くスクロールしたいときに邪魔になることがしばしばあったので作りました。
追記: 2013/05/17
動画が欲しいという天の声を聞いて用意してみました。
動画だとちょっとカクついていますが参考にどうぞ。
インストール方法
NeoBundle 使用時は以下で、
NeoBundle 'yonchu/accelerated-smooth-scroll'
使い方
デフォルトで <C-d>/<C-u> と <C-f>/<C-b> キーを置き換えるので、特に設定もなく使用出来ます。
マッピングを変更したい場合は以下のように設定します。
" デフォルトマッピングを無効にする (必要なら) let g:ac_smooth_scroll_no_default_key_mappings = 1 nmap <silent> <C-d> <Plug>(ac-smooth-scroll-c-d) nmap <silent> <C-u> <Plug>(ac-smooth-scroll-c-u) nmap <silent> <C-f> <Plug>(ac-smooth-scroll-c-f) nmap <silent> <C-b> <Plug>(ac-smooth-scroll-c-b)
加速機能のみオフにしたい場合は以下のように設定します。
let g:ac_smooth_scroll_enable_accelerating = 0
smooth scroll の初速を変更したい場合は以下のように設定します。
" <C-d>/<C-u> 時のスリープ時間 (msec) : 小さくするとスクロールが早くなります。 " Default : 10 let g:ac_smooth_scroll_du_sleep_time_msec = 5 " <C-f>/<C-b> 時のスリープ時間 (msec) : 小さくするとスクロールが早くなります。 " Default : 10 let g:ac_smooth_scroll_fb_sleep_time_msec = 5
加速度を変更したい場合は、以下の関数を定義して下さい。
以下の関数はスクロールキーを押す度に呼ばれます。
" 以下はデフォルトの定義です。 " スクロールスキップ数を求める " key_count : 連続でキーを押した回数 " wlcount : 移動する行数 (1ページ移動の場合は1ページの行数, 半ページ移動の場合は半ページ分の行数) function! g:ac_smooth_scroll_calc_step(key_count, wlcount) if a:key_count > a:wlcount / 2 return a:wlcount endif return a:key_count endfunction " スリープ時間を求める " key_count : 連続でキーを押した回数 " sleep_time_msec : スリープ時間の初期値 " (g:ac_smooth_scroll_du_sleep_time_msec or g:ac_smooth_scroll_fb_sleep_time_msec の値) function! g:ac_smooth_scroll_calc_sleep_time_msec(key_count, sleep_time_msec) return a:sleep_time_msec - (a:key_count - 1) endfunction
よかったら使ってみて下さい。
あと、バグなどありましたら教えてください。
以上、
Vim Advent Calendar 2012 167日目の記事、 accelerated-smooth-scroll の紹介でした。
次回 168日目は、 cohama(@c0hama) さんです。