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?

Evan Carroll
fonte

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
DaveParillo
fonte
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