Not being satisfied with side-effects of `evil-symbol-word-search` or having to apply `(modify-syntax-entry)` explicitly to every mode, I found that apparently minor mode hooks are run after major mode syntax table is created. That means you can add a hook to modify syntax table to `evil-mode` hook and it should just work. ```lisp (defun myhook-evil-mode () (unless (or (eq major-mode 'special-mode) (minibufferp)) ;; make underscore part of a word (modify-syntax-entry ?_ "w"))) (add-hook 'evil-local-mode-hook 'myhook-evil-mode) ``` Maybe not optimal as it's executed every time a new buffer is created, but shouldn't matter in this case. What does though is that this allowed me [to get rid of a humongous 49 lines table](https://github.com/Hi-Angel/dotfiles/commit/4620b4d11afcef2fc22133c9573d0eb712f7bcc9#diff-ae51cdd59e3f8b0b021370d52c4d2651c0f0d5cf2ef163b8c81879251c26c277L298-L346) that was modifying syntax table of every possible mode I got to work with.