A solução mais simples: use ciWpara selecionar uma palavra delimitada por espaços em branco.
A questão maior tem a ver com o valor do _caractere na tabela de sintaxe . O problema é que _, por padrão, um constituinte de símbolo na tabela de sintaxe e você deseja tratá-lo como um constituinte de palavra.
Se você estiver usando o emacs 24.4, tente ativar superword-mode. Eu mesmo não tentei, então sua milhagem pode variar.
Uma alternativa é simplesmente modificar a tabela de sintaxe e dizer ao Emacs que você deseja que ele trate o _caractere como um constituinte de palavras, da seguinte forma:
(modify-syntax-entry ?_ "w")
Depois de fazer isso, ciwfunciona como você deseja, de modo que ele seleciona tudo abc_def_ghie não apenas def.
Fazer dessa maneira, no entanto, pode ser um exagero, especialmente se você quiser que a _contagem seja parte da palavra para o objeto de texto. Em vez disso, você pode aconselhar da evil-inner-wordseguinte maneira:
(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)))
Agora, _ainda é um constituinte de símbolo para tudo, exceto para o objeto de texto com palavras internas, portanto ciw, fará exatamente o que você deseja sem tocar na funcionalidade de qualquer outra coisa.
Você pode ler mais sobre como modificar tabelas de sintaxe no nó EmacsWiki .
w,aw, etc.), você pode fazer o mesmo com as seguintes funções também:evil-forward-word-begin,evil-forward-word-end,evil-backward-word-begin,evil-backward-word-end,evil-a-word,evil-inner-word. Nota: você precisa mudarunderscore-as-wordpara valores diferentes e únicos (arbitrários).