The following snippet will make Evil treat an Emacs symbol as a word.
(with-eval-after-load 'evil
(defalias #'forward-evil-word #'forward-evil-symbol)
;; make evil-search-word look for symbol rather than word boundaries
(setq-default evil-symbol-word-search t))
This has the advantage that it changes depending on the language:
foo-bar
is one symbol in lisp-mode
but two symbols (separated by -
) in c-mode
.