A solução mais simples: use ciW
para 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, ciw
funciona como você deseja, de modo que ele seleciona tudo abc_def_ghi
e 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-word
seguinte 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-word
para valores diferentes e únicos (arbitrários).