Najprostsze obejście: użyj, ciW
aby wybrać słowo rozdzielone spacjami.
Większy problem dotyczy wartości _
znaku w tabeli składni . Problem polega na tym _
, że domyślnie jest on składnikiem symbolu w tabeli składni i chcesz go traktować jako składnik słowa.
Jeśli używasz emacsa 24.4, możesz spróbować włączyć superword-mode
. Nie próbowałem tego sam, więc twój przebieg może się różnić.
Alternatywą jest po prostu samodzielna modyfikacja tabeli składni i poinformowanie Emacsa, że ma traktować _
znak jako składnik słowa, tak jak poniżej:
(modify-syntax-entry ?_ "w")
Po wykonaniu tej czynności ciw
działa tak, jak chcesz, tak, że wybierze wszystko abc_def_ghi
zamiast tylko def
.
Jednak robienie tego w ten sposób może być przesadą, szczególnie jeśli chcesz, _
aby liczyć się tylko jako część słowa dla obiektu tekstowego. Zamiast tego możesz doradzić evil-inner-word
w następujący sposób:
(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)))
Teraz _
jest nadal składnikiem symbolu dla wszystkiego oprócz obiektu tekstowego z wewnętrznym słowem, więc ciw
zrobi dokładnie to, co chcesz, bez dotykania funkcjonalności czegokolwiek innego.
Możesz przeczytać więcej o modyfikowaniu tabel składniowych w węźle EmacsWiki .
w
,aw
etc.), można zrobić to samo z następujących funkcji TOO:evil-forward-word-begin
,evil-forward-word-end
,evil-backward-word-begin
,evil-backward-word-end
,evil-a-word
,evil-inner-word
. Uwaga: musisz zmienićunderscore-as-word
na różne, unikalne (arbitralne) wartości.