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