はじめに
iVimを使っているとスワイプでスクロールしたくなります。
指を2本使えばホイール相当の動きをしますが、スマホなら1本指でやりたいものです。
探してみると、マークのおもしろい使い方を見つけたので共有しておきます。
スクリプト
function! Swipe()
"mark b is the current cursor position
"mark a is the previous cursor position
normal mb
let currPos=line('.')
normal `a
let prevPos=line('.')
if currPos>prevPos
normal `bma
execute "normal! \<C-e>"
elseif currPos<prevPos
normal `bma
execute "normal! \<C-y>"
endif
endfunction
map <silent> <LeftDrag> ma<LeftMouse>:call Swipe()<CR>
解説
ほとんど参考そのままです。
ドラッグすると最初の位置をマーク(ma)した後<LeftMouse>を呼びます。
<LeftMouse>のデフォルト動作はカーソル移動なので、カーソルのある位置をマークできます(mb)。
最後に2つの行数を比べてスクロールします。