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.