Solution de contournement la plus simple: permet ciW
de sélectionner un mot délimité par des espaces.
Le problème le plus important concerne la valeur du _
caractère dans la table de syntaxe . Le problème est qu’il _
s’agit par défaut d’un constituant de symbole dans la table de syntaxe et que vous souhaitez le traiter comme un constituant de mot.
Si vous utilisez emacs 24.4, vous pouvez essayer de l'activer superword-mode
. Je n'ai pas essayé moi-même, donc votre kilométrage peut varier.
Une alternative consiste simplement à modifier vous-même la table de syntaxe et à indiquer à Emacs que vous souhaitez que le _
caractère soit considéré comme un mot constituant, comme suit:
(modify-syntax-entry ?_ "w")
Une fois que vous avez fait cela, ciw
fonctionne comme vous le souhaitez, de sorte qu'il sélectionne tout abc_def_ghi
plutôt que juste def
.
Faire cela de cette manière peut toutefois être exagéré, surtout si vous voulez seulement que cela _
compte dans le mot pour l’objet texte. Au lieu de cela, vous pouvez conseiller evil-inner-word
comme suit:
(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)))
Maintenant, _
reste un symbole constitutif de tout sauf de l'objet texte de mot intérieur, donc ciw
fera exactement ce que vous voulez sans toucher à la fonctionnalité de quoi que ce soit d'autre.
Vous pouvez en savoir plus sur la modification des tables de syntaxe sur le nœud EmacsWiki .
w
,aw
, etc.), vous pouvez faire la même chose avec les fonctions suivantes aussi:evil-forward-word-begin
,evil-forward-word-end
,evil-backward-word-begin
,evil-backward-word-end
,evil-a-word
,evil-inner-word
. Remarque: vous devez modifierunderscore-as-word
différentes valeurs uniques (arbitraires).