Die einfachste Lösung: Verwenden ciW
Sie diese Option, um ein durch Leerzeichen getrenntes Wort auszuwählen.
Das größere Problem hat mit dem Wert des _
Zeichens in der Syntaxtabelle zu tun . Das Problem ist, dass _
es sich standardmäßig um einen Symbolbestandteil in der Syntaxtabelle handelt und Sie diesen als Wortbestandteil behandeln möchten.
Wenn Sie Emacs 24.4 verwenden, können Sie versuchen, es zu aktivieren superword-mode
. Ich habe es nicht selbst ausprobiert, daher kann Ihr Kilometerstand variieren.
Eine Alternative besteht einfach darin, die Syntaxtabelle selbst zu ändern und Emacs mitzuteilen, dass das _
Zeichen wie folgt als Wortbestandteil behandelt werden soll:
(modify-syntax-entry ?_ "w")
Nachdem Sie dies getan haben, ciw
funktioniert es so, wie Sie es möchten, sodass es nicht nur, abc_def_ghi
sondern alles auswählt def
.
Wenn Sie dies jedoch auf diese Weise tun, ist dies möglicherweise zu viel des Guten, insbesondere wenn Sie nur möchten _
, dass das Wort als Teil des Textobjekts gezählt wird. Stattdessen können Sie evil-inner-word
Folgendes raten :
(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)))
Ist jetzt _
immer noch ein Symbolbestandteil für alles außer für das Textobjekt mit dem inneren Wort, ciw
wird also genau das tun, was Sie wollen, ohne die Funktionalität von irgendetwas anderem zu berühren.
Weitere Informationen zum Ändern von Syntaxtabellen finden Sie im EmacsWiki-Knoten .
w
,aw
usw.), können Sie das gleiche mit den folgenden Funktionen auch tun:evil-forward-word-begin
,evil-forward-word-end
,evil-backward-word-begin
,evil-backward-word-end
,evil-a-word
,evil-inner-word
. Hinweis: Sie müssenunderscore-as-word
in verschiedene, eindeutige (willkürliche) Werte wechseln .