Vim: Как изменить регистр при замене

Источник: «Change case during substitution»
Узнайте как изменить регистр текста внутри шаблона при замене в Vim.

Недавно мы рассмотрели, как вставить совпавший шаблон в замещающий текст. В дополнение к простому использованию совпавшего шаблона как есть, Vim позволяет манипулировать регистром исходного шаблона при его замене.

Как их использовать? Что ж, мы можем объединить их с предыдущим советом по использованию & в шаблоне замены. Или мы можем использовать пронумерованные захваты, такие как \1, \2 и т.д., для более сложного сопоставления. В любом случае мы добавляем один из этих экранированных символов перед той частью, которой хотим манипулировать. Например, мы можем найти все адреса электронной почты и переписать их в нижнем регистре:

:%s/\S\+@\S\+/\L&/

Ключевой частью является \L перед &. Это означает, что весь следующий текст будет переведён в нижний регистр.

Вот ещё один. Допустим, мы хотим сделать часть имени в адресе электронной почты строчными буквами, но оставить название компании нетронутым. Таким образом, FirstLast@Company.com станет firstlast@company.com. В этом случае нужно использовать \e (или \E), чтобы завершить манипулирование регистром символов на полпути через шаблон замены. Окончательная строка замены будет выглядеть так:

:%s/\(\S\+\)\(@\S\+\)/\L\1\e\2/g

Важным моментом снова является замена. Мы используем \L, чтобы начать изменять регистр на нижний, затем \1 для первого захвата (например, FirstLast), затем \e, для завершения изменения регистра на нижний, а затем \2 для второго захвата (например, @Company.com). В результате первая часть email адреса написана строчными буквами, а всё остальное остаётся прежним.

Вот демонстрация первого преобразования email адреса (перевод всего адреса в нижний регистр):

Дополнительные материалы

Предыдущая Статья

Что такое URL

Следующая Статья

Техники рефакторинга CSS