Самый простой обходной путь: используйте ciWдля выбора слова, разделенного пробелом.
Большая проблема связана со значением _символа в таблице синтаксиса . Проблема заключается в том _, что по умолчанию это символ, составляющий символ в таблице синтаксиса, и вы хотите рассматривать его как компонент слова.
Если вы используете emacs 24.4, вы можете попробовать включить superword-mode. Я сам не пробовал, поэтому ваш пробег может отличаться.
Альтернатива - просто изменить таблицу синтаксиса самостоятельно и сообщить Emacs, что вы хотите, чтобы она воспринимала _символ как составляющую слова, например:
(modify-syntax-entry ?_ "w")
После того, ciwкак вы это сделаете, работает так, как вы хотите, чтобы он выбрал все, abc_def_ghiа не только def.
Однако это может быть излишним, особенно если вы хотите, _чтобы значение считалось только частью слова для текстового объекта. Вместо этого вы можете посоветовать evil-inner-wordследующее:
(defadvice evil-inner-word (around underscore-as-word activate)
(let ((table (copy-syntax-table (syntax-table))))
(modify-syntax-entry ?_ "w" table)
(with-syntax-table table
ad-do-it)))
Теперь _все еще является символом, составляющим все, кроме текстового объекта внутреннего слова, поэтому ciwбудет делать именно то, что вы хотите, не затрагивая функциональность чего-либо еще.
Вы можете прочитать больше об изменении таблиц синтаксиса на узле EmacsWiki .
w,awи т.д.), вы можете сделать то же самое со следующими функциями тоже:evil-forward-word-begin,evil-forward-word-end,evil-backward-word-begin,evil-backward-word-end,evil-a-word,evil-inner-word. Примечание: вам нужно изменитьunderscore-as-wordна разные, уникальные (произвольные) значения.