Substituir uma string sem mudar de maiúsculas e minúsculas?


18

Devido a uma peculiaridade no idioma específico do domínio em que estou trabalhando, frequentemente enfrento a tarefa de (seletivamente, não globalmente) substituir termou substituir TERMpor , wordou WORD, respectivamente.

Isso significa que procuro sem distinção entre maiúsculas e minúsculas terme quero substituí-lo por word , mantendo termintacta as maiúsculas / minúsculas do original .

Desde validado todo termpara consistente / minúsculas maiúsculas seria difícil e não é realmente necessário, eu iria se contentar com maiúsculas / minúsculas do word/ WORDa ser decidido sobre a primeira letra do term.

Como eu consegui isso?


2
Nota sobre o "seletivamente" para aqueles que não o conhecem: basta adicionar cao final das instruções de substituição abaixo, e o Vim perguntará sobre cada partida.
DevSolar

Respostas:


16

Michaels Geddes' plug-in keepcase tem tudo que você precisa:

:%SubstituteCase/\cterm/word/g

Outros elementos de sintaxe de :substitutetambém são suportados.


5
Brilhante ... isso vai acelerar significativamente as coisas para mim. Percebo também que não pergunto mais " isso pode ser feito", mas apenas " como fazê-lo". Parece que finalmente "cheguei" ao Vim. :-D
DevSolar 02/12/2015

16

Isto pode ser tratado pelo :Subvertdo abolir plug-in :

Uma vez, tive um aplicativo com um modelo de domínio chamado "facilidade" que precisava ser renomeado para "construção". Então, uma simples pesquisa e substituição, certo?

:%s/facility/building/g

Ah, mas as variantes do case!

:%s/Facility/Building/g
:%s/FACILITY/BUILDING/g

Espere, o plural é mais que "s", então precisamos entender também!

:%s/facilities/buildings/g
:%s/Facilities/Buildings/g
:%s/FACILITIES/BUILDINGS/g

Abolish.vim está de costas. Um comando para executar todos os seis, e você pode repeti-lo com & também!

:%Subvert/facilit{y,ies}/building{,s}/g

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.