🤲
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