VIM vê as correspondências de expressões regulares enquanto você digita

8

Se eu digitar /regex , o cursor saltará temporariamente para a primeira correspondência e todas as correspondências serão realçadas. Isso atualiza conforme eu digito. É possível obter esse comportamento quando estou me preparando para fazer uma substituição? Por exemplo, quando estou trabalhando em uma expressão regular complicada :%s/\<regex\>/ , gostaria de saber o que é correspondente antes de puxar o gatilho e mudar tudo. Alguma maneira de fazer isso?

    
por John Berryman 12.06.2012 / 17:49

3 respostas

11

Digite sua pesquisa usando / (ou ? ) para começar, o que permitirá que você ajuste sua regex (já que você está usando incsearch)

Depois de obter tudo de bom, você pode usar o padrão de pesquisa anterior (o que acabou de usar) no comando substituto usando dois separadores para o item 'pesquisa':

/elephant                       " find the next elephant
:%s//rhino/gc                   " make then all rhinos!

Claro, você pode usar seleções e intervalos, normalmente.

:1,15s,,cougar,g
:'<,'>s::tiger:
    
por 13.07.2012 / 09:20
2

Uma opção é que você pode ter um sinalizador de confirmação c .

:%s;regex;replacement;gc

:h s_flags :

[c] Confirm each substitution.  Vim highlights the matching string.  You can type:              
        'y'     to substitute this match
        'l'     to substitute this match and then quit ("last")
        'n'     to skip this match
        <Esc>   to quit substituting
        'a'     to substitute this and all remaining matches
        'q'     to quit substituting

Você também pode tentar o comando grep para ver a saída filtrada e o arquivo original destacado.

:g/re/p ou :g/re/

    
por 12.06.2012 / 19:31
0

Bem, o caminho mais curto para ver qual será a correspondência da sua expressão regular é fazer uma pesquisa com / usando o regex desejado. Ele vai pular para o primeiro jogo e marcá-lo enquanto você está digitando. Experimente - vim não irá desapontá-lo.

    
por 12.06.2012 / 20:30