Замена регулярного выражения в смешанном регистре в Vim


9

Я часто сталкиваюсь с ситуацией, когда у меня есть файл с большим количеством смешанных дел. Например,

CamelCase and camelCase

Я ищу замену регулярного выражения Vim,

AnotherCase and anotherCase

Прямо сейчас я делаю это в два этапа после визуального выбора линий,

:s/CamelCase/AnotherCase/g
:s/camelCase/anotherCase/g

Это возможно за один шаг замены, или я должен смотреть на другие опции, как функция в .vimrc?

Ответы:


7

Я бы предложил использовать :Subvertчерез Abolish.vim Тима Папы

:%S/camelCase/anotherCase/g

Эпизод Vimcasts : Замена с наддувом: Subvert


Этот плагин сделал это так просто. Я не заглянул под капот, но подумал, что попробую :%S/CamelCase/AnotherCase/g, однако он только заменяет CamelCaseи оставляет camelCaseкак есть. Ничего страшного, просто кое-что запомнить.
wsams

Скорее всего, он использует смарт-регистр или что-то в этом роде, поэтому любые символы в верхнем регистре должны быть в верхнем регистре, но при необходимости они могут быть написаны заглавными буквами.
dash-tom-bang

3

У вас также есть почтенный чемоданчик .

С

:SubstituteCase#\ctoto\(Titi\)tata#\1Tutu#g

вы получите:

 totoTitiTata -> titiTutu
 TotoTitiTata -> TitiTutu
 tototititata -> tititutu
 tototitiTata -> titiTutu
 TototitiTata -> TitiTutu 
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.