blog/
Автозамена в Sublime (regex, grep)
Есть плагин reg_replace для Sublime, и он умеет выполнять замену всякого на всякое с использованием regexp, например. Он легко устанавливается через Package Control.
Например, мне надо было привести большой текст к определённому типовому состоянию, и я написал себе вот такой набор, который достаточно просто добавить в файл конфигурации этого плагина в блок «replacements»: {… перед последней закрывающей }, например (это файл формате JSON и он лежит вот тут C:\Users\юзернэйм\AppData\Roaming\Sublime Text 3\Packages\User\reg_replace_rules.sublime-settings):
- upd 02/18/2020: обновил, немного исправил список.
"strong": { "find" : "^(([A-ЯA-Z].+):)", //слово с большой буквы в начале строки, заканчивая двоеточием "replace": "<strong>\\1</strong>", "greedy": true }, "em": { "find" : "^(([а-яa-z].+):)", //слово с маленькой буквы в начале строки, заканчивая двоеточием "replace": "<em>\\1</em>", "greedy": true }, "wrap1" : { "find" : " - ", //дефис "replace": " — ", "greedy": true, }, "wrap2" : { "find" : " — ", //тире длинное "replace": " — ", "greedy": true, }, "wrap21" : { "find" : "^— ", //тире длинное "replace": "— ", "greedy": true, }, "wrap3" : { "find" : "(\\s([А-ЯA-Za-zа-я])\\.)\\s", //однобуквенные с точкой "replace": " \\1 ", "greedy": true, }, "wrap4" : { "find" : "\\s([А-ЯA-Za-zа-я0-9])(\\s)", //однобуквенные "replace": " \\1 ", "greedy": true, }, "wrap5" : { "find" : "(\\s([А-ЯA-Za-zа-я0-9][А-ЯA-Za-zа-я0-9])\\.)\\s", //двухбуквенные с точкой "replace": " \\1 ", "greedy": true, }, "wrap6" : { "find" : "\\s([А-ЯA-Za-zа-я0-9][А-ЯA-Za-zа-я0-9])(\\s)", //однобуквенные "replace": " \\1 ", "greedy": true, }, "wrap7" : { "find" : "\\s(м|m[²-³])", //отбивка единиц "replace": " \\1", "greedy": true, }, "м2" : { "find" : "м2", "replace": "м²", "greedy": true, }, "м3" : { "find" : "м3", "replace": "м³", "greedy": true, },
Когда это добавили, нужно сделать возможным запуск этих команд в Sublime. Для этого дописываем вот такое в файл, где хранятся пользовательские команды Sublime (это тоже JSON, и он хранится вот тут C:\Users\юзернэйм\AppData\Roaming\Sublime Text 3\Packages\User\Default.sublime-commands):
[ { "caption": "Reg Replace: 01 Format before semicolon", "command": "reg_replace", "args": {"replacements": ["strong", "em"]} }, { "caption": "Reg Replace: 02 Wrap in nbsp", "command": "reg_replace", "args": {"replacements": ["wrap1", "wrap2", "wrap3", "wrap4", "wrap5", "wrap6", "wrap7"]} }, { "caption": "Reg Replace: 03 м2м3", "command": "reg_replace", "args": {"replacements": ["м2", "м3"]} }, ]
Запуск скрипта происходит через командную строку, на Ctrl+Shift+p → regreplace
В результате, вот такой текст
моментально (почти) становится вот таким, например:
UPD:
Найти все в начале строки до пробела с цифрой (исключительно):
(^.+?(?=\s\d))
Может быть интересно:
- How to float divs with different height
- Копировать и отразить направляющие в InDesign
- Calculate inclination of a roof valley with Python
- Скрипт для выбора победителя в инстаграме (из лайков)
- Урок — Буквы от больших к маленьким в InDesign