Заменить строку без изменения регистра?


18

Из-за извращения в предметно-ориентированном языке, с которым я работаю, я часто сталкиваюсь с задачей (выборочно, а не глобально) замены termили TERMс wordили WORD, соответственно.

Это означает, что я ищу без учета регистраterm и хочу заменить его, word сохраняя при этом прописные / строчные буквы оригинала termнетронутыми .

Поскольку проверка целого на termналичие согласованных прописных / строчных букв будет затруднена и не является действительно необходимой, я бы согласился с прописными / строчными буквами word/, WORDкоторые решаются по первой букве term.

Как я мог этого добиться?


2
Обратите внимание на «выборочно» для тех, кто его не знает: просто добавьте cв конец приведенные ниже операторы подстановки, и Vim спросит вас о каждом совпадении.
DevSolar

Ответы:


16

В плагине Майкла Геддеса есть все, что вам нужно:

:%SubstituteCase/\cterm/word/g

Другие элементы синтаксиса из :substituteтакже поддерживаются.


5
Блестящий ... это значительно ускорит для меня вещи. Я также замечаю, что больше не спрашиваю « можно ли это сделать», а только « как это сделать». Кажется, я наконец "прибыл" в Vim. :-D
DevSolar

16

Это может быть обработано плагином:Subvert от abolish :

Однажды у меня было приложение с моделью предметной области под названием «средство», которое нужно было переименовать в «здание». Итак, простой поиск и замена, верно?

:%s/facility/building/g

Ох, но варианты вариантов!

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

Подождите, множественное число больше, чем "S", поэтому мы должны получить это тоже!

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

Abolish.vim имеет вашу спину. Одна команда, чтобы сделать все шесть, и вы можете повторить это с & тоже!

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

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