Автозамена в Sublime (regex, grep)

Ivan @ 18 / 12 / 2019 @ Веб / Памятки / Программирование
( / / / )

> Время чтения: 9 мин.

Есть пла­гин 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": "&nbsp;— ",
    "greedy": true,
},

"wrap2" : {
    "find" : " — ", //тире длинное
    "replace": "&nbsp;— ",
    "greedy": true,
},

"wrap21" : {
    "find" : "^— ", //тире длинное
    "replace": "—&nbsp;",
    "greedy": true,
},

 "wrap3" : {
    "find" : "(\\s([А-ЯA-Za-zа-я])\\.)\\s",  //однобуквенные с точкой
    "replace": " \\1&nbsp;",
    "greedy": true,
},
       
"wrap4" : {
    "find" : "\\s([А-ЯA-Za-zа-я0-9])(\\s)",  //однобуквенные
    "replace": " \\1&nbsp;",
    "greedy": true,
},
       
"wrap5" : {
    "find" : "(\\s([А-ЯA-Za-zа-я0-9][А-ЯA-Za-zа-я0-9])\\.)\\s", //двухбуквенные с точкой
    "replace": " \\1&nbsp;",
    "greedy": true,
},
       
"wrap6" : {
    "find" : "\\s([А-ЯA-Za-zа-я0-9][А-ЯA-Za-zа-я0-9])(\\s)",  //однобуквенные
    "replace": " \\1&nbsp;",
    "greedy": true,
},

"wrap7" : {
    "find" : "\\s(м|m[²-³])",  //отбивка единиц
    "replace": "&nbsp;\\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+pregreplace

В резуль­та­те, вот такой текст

момен­таль­но (почти) ста­но­вит­ся вот таким, напри­мер:

UPD:
Най­ти все в нача­ле стро­ки до про­бе­ла с циф­рой (исклю­чи­тель­но):

(^.+?(?=\s\d))

 


Может быть интересно:

Подпишитесь на нас в социальных сетях!

Instagram
VK
Facebook
YouTube!

Подпишитесь на обновления

* нажимая на кнопку «Подписаться», вы даете согласие на обработку своих персональных данных