Okay, here's what you do.
(1) In viper mode, use C-h k
to find out what <delete>
is bound to. Just in case you want it attached to some other key.
(2) In some other mode, use C-h k
to find out what the name of the function is that does what you want. I think it's delete-forward
but don't trust me, check. RMS has an annoying tendency to rename things.
(3) Back in a viper-mode buffer use M-x local-set-key
to set to what you want. Try it.
(4) If you're happy add this code to your .emacs
(defun fix-del-key-in-viper-mode ()
(define-key viper-mode-map "<delete>" your-desired-function))
(add-hook viper-mode-hooks fix-del-key-in-viper-mode)
Warning, you may have to mess about with this a bit as I haven't tested it. In particular make sure it's really viper-mode-map
and not something else, as the naming conventino isn't consistently followed.