La soluzione più semplice: usare ciWper selezionare una parola delimitata da spazi bianchi.
Il problema più grande riguarda il valore del _carattere nella tabella della sintassi . Il problema è che _, per impostazione predefinita, è un componente simbolo nella tabella della sintassi e si desidera trattarlo come un componente parola.
Se stai usando emacs 24.4, potresti provare ad abilitare superword-mode. Non l'ho provato da solo, quindi il tuo chilometraggio può variare.
Un'alternativa è semplicemente modificare la tabella della sintassi da soli e dire a Emacs che vuoi che tratti il _personaggio come una parola costituente, in questo modo:
(modify-syntax-entry ?_ "w")
Dopo averlo fatto, ciwfunziona come desideri, in modo che selezionerà tutto abc_def_ghipiuttosto che solo def.
Farlo in questo modo, tuttavia, può essere eccessivo, soprattutto se si desidera _che contino solo come parte della parola per l'oggetto di testo. Invece, puoi consigliare evil-inner-wordcome segue:
(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)))
Ora, _è ancora un simbolo costitutivo di tutto tranne che per l'oggetto di testo della parola interna, quindi ciwfarà esattamente ciò che vuoi senza toccare la funzionalità di qualsiasi altra cosa.
Puoi leggere di più sulla modifica delle tabelle di sintassi sul nodo EmacsWiki .
w,aw, ecc), si può fare lo stesso con le seguenti funzioni anche:evil-forward-word-begin,evil-forward-word-end,evil-backward-word-begin,evil-backward-word-end,evil-a-word,evil-inner-word. Nota: è necessario passareunderscore-as-worda valori diversi, univoci (arbitrari).