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`.