Como altero até o próximo sublinhado no VIm?

60

Se eu tiver esse texto no vim, e meu cursor estiver no primeiro caractere:

www.foo.com

Eu sei que posso fazer:

  • cwpara mudar até o primeiro período, porque a word(w minúsculo) termina em qualquer pontuação OU espaço em branco
  • cWpara alterar o endereço inteiro, porque a Word(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 cwe cWmudar 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 wou Wque não inclua sublinhados?

Nathan Long
fonte
O que há de errado :nohl?
Ignacio Vazquez-Abrams
Quero que os termos de pesquisa sejam destacados na maioria das vezes; só que não quando uso a pesquisa como movimento. (Também acabei de fazer esta pergunta: superuser.com/questions/244042/… )
Nathan Long

Respostas:

82

Você pode fazer cf_. f não destacará o caractere pesquisado.

Você também pode fazer isso ct_se não quiser incluir o _.

duas Caras
fonte
15
Você está confundindo f, t, F e T. favança para o personagem; Fretrocede para o personagem; tavança antes do personagem; e Trecua para o personagem à direita do personagem alvo. Portanto, seu segundo exemplo deveria ter sido ct_.
10131 garyjohn
2
Agora minha resposta está corrigida. Desculpe e obrigado.
doubleface
4
ct_é exatamente o que eu queria. Isso agora se tornou parte do meu fluxo de trabalho regular. Obrigado!
Nathan Long
11
Isso também é incrivelmente extensível e, portanto, poderoso. Eu acho que você pode colocar qualquer caractere após f ou t, e ele passará para a próxima ocorrência (ou prev para caps). Obrigado.
Dom
2
O Vim nunca falha, apenas a compreensão do que é capaz!
Benjamin R
65

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.

frabjous
fonte
6
É ótimo saber que posso definir meus próprios limites de palavras, mas, depois de pensar um pouco, acho que a melhor solução é ct_como a doubleface diz abaixo, pois é concisa e é o comportamento padrão do vim.
Nathan Long
Este é o meu favorito
Jay
2
Eu gosto deste, mas ele quebra minha codificação de cores de sintaxe em php.
Aaron Surrain
Como posso desabilitar ou alternar isso?
Behe
1

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.

Jdoherty
fonte