Pergunta

Eu preciso substituir o seguinte:

CREATE TABLE /*!32312 IF NOT EXISTS*/ `access`

para

CREATE TABLE IF NOT EXISTS `access`

eu tentei

:%s/\/\*\!\d+(.*)\*\//\1/g

Mas isso não parecia ir. O que estou fazendo errado?

Foi útil?

Solução

O VIM requer retrocesso + (ou use * em vez disso). Além disso, você precisa de parênteses de agrupamento de barraca de barra. Desta forma:

:%s/\/\*\!\d\+\(.*\)\*\//\1/g

Sim, as regexes Posix de estilo antigo de Vim são péssimas:/

EDIT: Como mencionado nos comentários abaixo, + funciona se escapado como +. E d realmente é suportado, opa. Editou o exemplo regex para corrigir isso. Veja também o exemplo de Brian Carper para uma versão mais sucinta e legível.

Outras dicas

Use "muito mágica" e use delimitadores que não sejam o padrão para facilitar a leitura (e lembrar).

:%s@\v/\*!\d+(.*)\*/@\1@g

Sem "muito mágica", você tem que colocar uma barra de barriga na frente de + e () (mas não na frente de * ou algumas outras coisas). Não é muito consistente.

Um pouco diferente e mais eficiente com [^*]+ :-)

1,$s/\v\/\*\!\d+\s*([^*]+)\*\//\1
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top