Como eu faço uma pesquisa e substituição de blocos com o Vim?


8

Tenho texto no Vim

  1. aperte Ctrl+Vpara colocar VIm no modo de bloco
  2. destacar o texto que quero
  3. tipo :isso dá o prompt este:'<,'>
  4. Eu adiciono ao prompt meu regex s/ /*/g. Isso me deixa com :'<,'>s/ /*/go texto em destaque
  5. Eu apertei enter

Infelizmente, ele opera na linha inteira do bloco, não apenas no bloco. Existe alguma maneira de fazer uma pesquisa de bloco e substituir?

Respostas:


12

Ao usar ex-comandos no modo de bloqueio visual :, eles sempre operam na linha inteira. Existem duas maneiras de contornar isso:

  1. O \%Vátomo irá corresponder apenas dentro da área visual. Experimentar

    :'<,'>s/\%V /*/g
    

    Vejo :help %V

  2. Existem versões visuais especiais de alguns comandos, live v_s ou v_r. Vejo:help visual-operators

Eu não consigo descobrir como fazer isso funcionar
Evan Carroll

o átomo \% V irá restringir um padrão para que ele corresponda apenas dentro da seleção visual. Tente:'<,'>s/\%V /*/g
DaveParillo

1
Esta página tem uma boa descrição do que você está tentando fazer. vim.wikia.com/wiki/Search_and_replace_in_a_visual_selection
DaveParillo
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.