Se eu tiver esse texto no vim, e meu cursor estiver no primeiro caractere:
www.foo.com
Eu sei que posso fazer:
cw
para mudar até o primeiro período, porque aword
(w minúsculo) termina em qualquer pontuação OU espaço em brancocW
para alterar o endereço inteiro, porque aWord
(w maiúsculo) termina apenas no espaço em branco
Agora, e se eu tiver isso:
stupid_method_name
e quer mudar para isso?
awesome_method_name
Ambos cw
e cW
mudar a coisa toda, mas eu só quero mudar o fragmento antes do sublinhado.
Minha técnica de fallback é c/_
, significando 'alterar até que você atinja o próximo sublinhado em uma pesquisa', mas, para mim, isso também faz com que todos os sublinhados sejam destacados como termos de pesquisa, o que é um pouco irritante.
Existe um especificador como w
ou W
que não inclua sublinhados?
:nohl
?Respostas:
Você pode fazer
cf_
. f não destacará o caractere pesquisado.Você também pode fazer isso
ct_
se não quiser incluir o _.fonte
f
avança para o personagem;F
retrocede para o personagem;t
avança antes do personagem; eT
recua para o personagem à direita do personagem alvo. Portanto, seu segundo exemplo deveria ter sidoct_
.ct_
é exatamente o que eu queria. Isso agora se tornou parte do meu fluxo de trabalho regular. Obrigado!Coloque isso no seu .vimrc:
set iskeyword-=_
Então _ será tratado como um limite de palavra (embora não seja um limite de PALAVRA), e cw poderia ser usado apenas para mudar "impressionante", e cW para mudar tudo.
Vejo:
:help iskeyword
e
:help word
para mais informações.
fonte
ct_
como a doubleface diz abaixo, pois é concisa e é o comportamento padrão do vim.O camelcasemotion é um plugin vim bastante útil que permite que você navegue pelas palavras ao usar a notação sublinhada ou camelcase. Usando este plug-in, você pode colocar uma vírgula na frente de muitos dos comandos tradicionais do vim motion, que permitirão tratar as palavras em notação sublinhada ou camelcase como palavras completas.
fonte