La soluzione più semplice: usare ciW
per 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, ciw
funziona come desideri, in modo che selezionerà tutto abc_def_ghi
piuttosto 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-word
come 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 ciw
farà 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-word
a valori diversi, univoci (arbitrari).