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?


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 _.


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.