This is a step in the right direction:
(evil-define-operator evil-change-into-null-register (beg end type register yank-handler)
"Change text from BEG to END with TYPE. Do not save it in any register."
(interactive "<R><x><y>")
(evil-change beg end type ?_ yank-handler))
(evil-define-operator evil-delete-into-null-register (beg end type register yank-handler)
"Delete text from BEG to END with TYPE. Do not save it in any register."
(interactive "<R><x><y>")
(evil-delete beg end type ?_ yank-handler))
(define-key evil-normal-state-map "c" 'evil-change-into-null-register)
(define-key evil-normal-state-map "d" 'evil-delete-into-null-register)
However, C
, D
, s
, S
, x
, X
, and potentially several others would also need to be rebound, and this doesn't seem to work properly for x
(it still expects a motion):
(evil-define-operator evil-delete-char-into-null-register (beg end type register yank-handler)
"Delete text from BEG to END with TYPE. Do not save it in any register."
(interactive "<R><x>")
(evil-delete-char beg end type ?_ yank-handler))
(define-key evil-normal-state-map "x" 'evil-delete-char-into-null-register)
Your best bet is add around advice around evil-delete
and always pass it the ?_
register (sorry, I don't have time to do that now, but I thought I'd post what I had).