Como combinar uma palavra que termina com letra maiúscula e uma letra específica?


9

Eu tenho palavras como lblSERINOdnas frases. As palavras são separadas por espaço em branco.

Quero substituir o dfinal de todas essas palavras por u. Assim, por exemplo, lblSERINOdserá semelhante lblSERINOu.

Eu tentei, s/.*\ud /u /gmas Vim diz que não pode encontrar .*\ud.

Qual é o problema aqui?

Respostas:


10

Uma maneira de fazer isso seria o seguinte:

:%s/\u\zsd\>/u/g

Inicialmente eu assumi que o novo motor regex Vim (sendo anunciado como "mais rápido, mas limitado") não podem entender \uem :substitute, mas este não é o caso. I em vez acho que agora que o OP esqueceu de usar %e simplesmente procurou na linha errada; isso explicaria a mensagem de erro, mas é claro que ainda precisa ser confirmado como "a" causa.


2
você tem certeza da coisa 're' engine? Não vejo como isso faz diferença.
— Christian Brabandt

Não, não tenho certeza ... Fiz um teste rápido que não funcionou, depois reli patternno arquivo de ajuda, vi mencionado que o novo mecanismo é mais limitado que o antigo, assumindo que é a causa .. meu primeiro teste foi bastante / possivelmente falho #
— VanLaser

5

Parece que você pode ter alterado a 'magic'opção do Vim do padrão para 'nomagic'. Você pode verificar isso com o comando

:verbose set magic?

Conforme documentado em : help / magic , 'nomagic'faz com que o .em um regexp seja tratado como um ponto literal em vez do metacaractere que significa "corresponder a qualquer caractere".

Eu altamente recomendo deixar esta opção em seu valor padrão. Esta é uma das poucas opções que realmente não deveriam existir e podem causar problemas sutis nos plugins.

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.