Найпростіший спосіб вирішення: використовуйте 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різні, унікальні (довільні) значення.