🤲
Vimのページスクロールの挙動をちょっと改善するマッピング
Vimでは、<C-f>/<C-b>で1ページずつ、<C-d>/<C-u>で半ページずつスクロールすることができます。
じつはこれらの差はスクロール量だけではありません。
-
<C-b>はファイル先頭が見えているときにはカーソルが移動しないのに対し、<C-u>はファイル先頭までカーソルが移動する -
<C-f>はファイル末尾がウィンドウ上端に来るまでスクロールする(scrolloffの設定による)のに対し、<C-d>はファイル末尾がウィンドウ下端から離れない

<C-f>はファイル末尾がウィンドウ下端から離れる

<C-d>はファイル末尾がウィンドウ下端から離れない
個人的に、<C-d>/<C-u>の挙動のほうが好みだったので、「<C-f>/<C-b>を入力すると<C-d>/<C-u>を2回実行する」マッピングを作りました。
countにも対応しているので、例えば2<C-f>を入力すると2ページスクロール(<C-d>を4回実行)します。
nnoremap <C-f> <Cmd>set scroll=0<CR><Cmd>execute 'normal!' repeat("\<C-d>", v:count1 * 2)<CR>
nnoremap <C-b> <Cmd>set scroll=0<CR><Cmd>execute 'normal!' repeat("\<C-u>", v:count1 * 2)<CR>
なお、<C-d>/<C-u>は&scrollオプションの影響を受けるため、set scroll=0で初期値に戻しています。
Discussion