Русское сообщество Sublime Text
Основной раздел => Вопросы и ответы => Тема начата: TRUEMAKER от Декабря 07, 2015, 22:38:37
-
Для повторяющихся задач обработки текстов
(по замене Ctrl+H с использованием регулярных выражений) / последовательность 3-5 замен выделенного, обертки тегами и замены /
не получается записать эти действия даже в макрос.
В записанном макросе действия Ctrl+H и значения полей игнорируются.
Кто-то сможет подсказать возможные пути автоматизации?
Хотя-бы поступенчато (чтоб не вводить регулярки каждый раз заново при Ctrl+H форме)
Заранее признателен.
-
Можно установить 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 больше параметров и еще примеры.
-
Можно установить RegReplace (https://packagecontrol.io/packages/RegReplace).
Спасибо
В принципе работает, НО
- В RegReplace немного другой синтаксис самих регулярных выражений
- Не нашел возможности управлять опциями (например в Ctrl+H форме есть свичи замены в выделенном блоке "In Selection" и т.д.) Т.е. заменять НЕ ВЕЗДЕ где совпадет.
И кстати есть ли путь автоматизации обертки тегами выделенной области ?
Например по маске
ul.customclass>li*>a[href="" target="_blank" title=""]
-
Для замены в выделенном нужно добавить параметр "selection_only": true в пользовательский файл настроек RegReplace.
Как автоматизировать Emmet не знаю. С наскока сделать не получилось.
-
Для действия 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"
}
]
-
На один хоткей можно повесить несколько команд. Однако, для этого нужно добавить плагин https://github.com/skuroda/ImprovedMacros
К сожалению, он недоступен через PackageControl (я не нашел), так что надо установить руками.
-
Получилось пока установить 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",]} }
-
Может будет полезно кому
ПОЛУЧИЛОСЬ не путем добавления вызова общего макроса в 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"} }