Русское сообщество Sublime Text

Основной раздел => Вопросы и ответы => Тема начата: TRUEMAKER от Декабря 07, 2015, 22:38:37

Название: Замены, регулярные выражения и макросы (АВТОМАТИЗАЦИЯ РУТИННЫХ ДЕЙСТВИЙ)
Отправлено: TRUEMAKER от Декабря 07, 2015, 22:38:37
Для повторяющихся задач обработки текстов
(по замене Ctrl+H с использованием регулярных выражений) / последовательность 3-5 замен выделенного, обертки тегами и замены /
не получается записать эти действия даже в макрос.
В записанном макросе действия Ctrl+H и значения полей игнорируются.

Кто-то сможет подсказать возможные пути автоматизации?
Хотя-бы поступенчато (чтоб не вводить регулярки каждый раз заново при Ctrl+H форме)

Заранее признателен.
Название: Re: Замены, регулярные выражения и макросы (АВТОМАТИЗАЦИЯ РУТИННЫХ ДЕЙСТВИЙ)
Отправлено: Loac от Декабря 08, 2015, 09:09:52
Можно установить RegReplace (https://packagecontrol.io/packages/RegReplace).

Добавить свои регулярные выражения Preferences / Package Settings / Reg Replace / Settings – User:

{
    "replacements": {
        "testReplacementsFirst": {
            "find": "class=\"(.+?)\"",
            "replace": "id=\"\\1\"",
        },
        "testReplacementsSecond": {
            "find": "_",
            "replace": "-",
        },
    }
}

Добавить команду в палитру команд (ctrl+p) Preferences / Package Settings / Reg Replace / Commands – User:

[
    {
        "caption": "Reg Replace: Test Replacements",
        "command": "reg_replace",
        "args": {
            "replacements": [
                "testReplacementsFirst",
                "testReplacementsSecond"
            ]
         }
     }
 ]

Или отредактировать файл с макросом Preferences / Browse Packages..., далее папка User:

[
  {
    "command": "reg_replace",
    "args": {
      "replacements": [
        "testReplacementsFirst",
        "testReplacementsSecond"
      ]
    }
  }
]

Тут Preferences / Package Settings / Reg Replace / Settings – Default больше параметров и еще примеры.
Название: Re: Замены, регулярные выражения и макросы (АВТОМАТИЗАЦИЯ РУТИННЫХ ДЕЙСТВИЙ)
Отправлено: TRUEMAKER от Декабря 08, 2015, 15:38:19
Можно установить RegReplace (https://packagecontrol.io/packages/RegReplace).

Спасибо
В принципе работает, НО

И кстати есть ли путь автоматизации обертки тегами выделенной области ?
Например по маске
ul.customclass>li*>a[href="" target="_blank" title=""]
Название: Re: Замены, регулярные выражения и макросы (АВТОМАТИЗАЦИЯ РУТИННЫХ ДЕЙСТВИЙ)
Отправлено: Loac от Декабря 09, 2015, 16:54:33
Для замены в выделенном нужно добавить параметр "selection_only": true в пользовательский файл настроек RegReplace.

Как автоматизировать Emmet не знаю. С наскока сделать не получилось.
Название: Re: Замены, регулярные выражения и макросы (АВТОМАТИЗАЦИЯ РУТИННЫХ ДЕЙСТВИЙ)
Отправлено: TRUEMAKER от Марта 15, 2016, 19:20:04
Для действия EMMET удалось записать файл макроса.
Он в главном меню присутствует Tools / Macros / User / name-of-emmet-macros

И работает нормально если предварительно выделить текст.

И нормально после этого работает 2 автозамены через RegReplace (как было указано).

А как бы это все объединить в единое действие?
(1) Или в файле макроса автозамен RegReplace вызвать сначала выполнение общего макроса name-of-emmet-macros
(2) Или хотя бы общий макрос name-of-emmet-macros привязать на хоткей как-то
Как RegReplace конкретный макрос вывести на хоткей я нашел
{
        "keys": ["ctrl+shift+t"],
        "command": "reg_replace",
        "args": {"replacements": ["remove_trailing_spaces"]}
    }

А в идеале бы его интегрировать как-то в текущий макрос RegReplace
Содержимое файла макроса обертки 1 действия EMMET с предварительно выделенным текстом
[
{
"args":
{
"panel_input": ".cat-list-row$$$*"
},
"command": "wrap_as_you_type"
}
]
Название: Re: Замены, регулярные выражения и макросы (АВТОМАТИЗАЦИЯ РУТИННЫХ ДЕЙСТВИЙ)
Отправлено: Loac от Марта 15, 2016, 19:49:10
На один хоткей можно повесить несколько команд. Однако, для этого нужно добавить плагин https://github.com/skuroda/ImprovedMacros

К сожалению, он недоступен через PackageControl (я не нашел), так что надо установить руками.
Название: Re: Замены, регулярные выражения и макросы (АВТОМАТИЗАЦИЯ РУТИННЫХ ДЕЙСТВИЙ)
Отправлено: TRUEMAKER от Марта 15, 2016, 20:07:24
Получилось пока установить 2 эти  макроса на соседние хоткеи
{ "keys": ["ctrl+shift+alt+n"], "command": "run_macro_file", "args": {"file": "Packages/User/cat-list-rowSSS_selected.sublime-macro"} },
{ "keys": ["ctrl+shift+alt+m"], "command": "reg_replace", "args": {"replacements": ["DivCatListRow0","DivCatListRow1",]} }
Название: Re: Замены, регулярные выражения и макросы (АВТОМАТИЗАЦИЯ РУТИННЫХ ДЕЙСТВИЙ)
Отправлено: TRUEMAKER от Марта 15, 2016, 20:40:12
Может будет полезно кому

ПОЛУЧИЛОСЬ не путем добавления вызова общего макроса в RegReplace,
а НАОБОРОТ путем добавления вызова макроса RegReplace после выполнения основного.
Основной макрос обертки заранее выделенного и сразу 2 автозамены
[
{
"args":
{
"panel_input": ".cat-list-row$$$*"
},
"command": "wrap_as_you_type"
},
{
"command": "reg_replace", "args": {"replacements": ["DivCatListRow0","DivCatListRow1",]}
}
]

И хоткей на вызов этого всего одним разом

{ "keys": ["ctrl+shift+alt+n"], "command": "run_macro_file", "args": {"file": "Packages/User/cat-list-rowSSS_selected.sublime-macro"} }