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,}/

MageProspero
fonte

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.

Edd Steel
fonte
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.

Kevin
fonte
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.

MetaEd
fonte