It just makes sense in my head to have M-n and M-p scroll multiple lines as an addition to the standard of having C-n and C-p go forward/backward a line. In prog-mode, that looks like forward-paragraph and backward-paragraph and in other modes that looks like jumping 6 lines at a time.
This has really been a joy. I hope others find this useful as well.
;; Bind scroll 6 lines at a time to M-n and M-p. If prog-mode, remap
;; to forward-paragraph and backward-paragraph respectively
(defun jump-multiple-lines-forward ()
(interactive)
(forward-line 6))
(defun jump-multiple-lines-backward ()
(interactive)
(forward-line -6))
(global-set-key (kbd "M-n") #'jump-multiple-lines-forward)
(global-set-key (kbd "M-p") #'jump-multiple-lines-backward)
(add-hook 'prog-mode-hook
(lambda ()
(local-set-key (kbd "M-n") #'forward-paragraph)
(local-set-key (kbd "M-p") #'backward-paragraph)))
;; Respect M-n and M-p key bindings in shell and eww modes. For shell mode,
;; remap next and previous command scrolling to M-N and M-P respectively
(add-hook 'shell-mode-hook
(lambda ()
(local-set-key (kbd "M-n") #'jump-multiple-lines-forward)
(local-set-key (kbd "M-p") #'jump-multiple-lines-backward)
(local-set-key (kbd "M-N") #'comint-next-input)
(local-set-key (kbd "M-P") #'comint-previous-input)))
(add-hook 'eww-mode-hook
(lambda ()
(local-set-key (kbd "M-n") #'jump-multiple-lines-forward)
(local-set-key (kbd "M-p") #'jump-multiple-lines-backward)))