O vex regex não precisa \ para escapar


17

Em Vim há uma opção para escrever regexs no mesmo estilo que Awk por exemplo

/sp\{0,\}/
Seria

/sp{0,}/

Respostas:


29

Preceder seu padrão \vtornará o padrão "mágico" e símbolos como {e [terão um significado interpretado (e os literais precisam ser escapados).

Então /\vsp{1,}, encontraria o que você queria (acabei de testar).

Você pode tornar isso um padrão, remapeando /para /\vcom as seguintes linhas no seu vimrc:

nnoremap / /\v
vnoremap / /\v

Veja :help patternpara mais.


1

/sp\{0,}

Obviamente {0,}, seria melhor usar *: /sp*iria (igual ao acima) encontrar um 's' seguido de zero ou mais p's. Observe que zero ou mais é sempre verdadeiro, portanto, não há razão para isso nessa expressão específica.


Todas essas informações foram boas e muito úteis. Existe uma maneira de evitar a fuga de caracteres especiais no vim?
MageProspero

Entendo o que você quer dizer agora. Eu duvido seriamente disso, isso quase certamente exigiria um analisador diferente desenvolvido em paralelo, e duvido que seria um recurso com demanda suficiente para justificar essa implementação e manutenção extras.
27411 Kevin

-1

O Vim não tem uma opção para emular expressões regulares no estilo awk, não. Existem muitos dialetos de regex e, infelizmente, sempre existem essas pequenas diferenças dialéticas para acompanhar ao passar de uma ferramenta para outra.

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.