Макросы в Notepad ++ - это просто набор закодированных операций: вы начинаете запись, работаете с буфером, возможно, активируете меню, останавливаете запись, затем воспроизводите макрос.
После расследования я обнаружил, что они сохраняются в файле shortcuts.xml в разделе «Макросы». Например, у меня есть:
<Macro name="Trim Trailing and save" Ctrl="no" Alt="yes" Shift="yes" Key="83">
<Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
<Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
<Action type="1" message="2170" wParam="0" lParam="0" sParam=" " />
<Action type="0" message="2327" wParam="0" lParam="0" sParam="" />
<Action type="0" message="2327" wParam="0" lParam="0" sParam="" />
<Action type="2" message="0" wParam="42024" lParam="0" sParam="" />
<Action type="2" message="0" wParam="41006" lParam="0" sParam="" />
</Macro>
Я не смотрел на источник, но, судя по виду, я бы сказал, что у нас есть сообщения, отправленные в Scintilla (компонент редактирования, возможно, типа 0 и 1), а также в сам Блокнот ++ (возможно, активирующий пункты меню).
Я не думаю, что он будет записывать действия в диалогах (например, поиск / замена).
Глядя на файл Scintilla.iface , мы видим, что 2170 - это код ReplaceSel (т. Е. Строка вставки ничего не выбрана), 2327 - это команда Tab, а Resource Hacker (просто удобно ...) показывает, что 42024 - это пункт меню «Trim Trailing Space», а 41006 - «Сохранить».
Я предполагаю, что тип действия 0 предназначен для команд Scintilla с числовыми параметрами, тип 1 для команд со строковым параметром, 2 для команд Notepad ++.
Проблема: у Scintilla нет команды «Заменить все»: задача клиента - выполнить итерацию с подтверждением или без него и т. Д.
Другая проблема: кажется, что действие типа 1 ограничено 1 символом (я редактировал вручную, при выходе из N ++ он был усечен).
Я попробовал несколько трюков, но боюсь, что эта задача выходит за рамки возможностей макроса.
Может быть, именно здесь SciTE со своей способностью написания сценариев Lua (или Блокнотом программиста, который, кажется, может быть написан с помощью Python) может иметь преимущество ...: -)
[РЕДАКТИРОВАТЬ] Похоже, я получил вышеупомянутый макрос из этой темы или подобного места ... :-) Я думаю, что первые строки не нужны (побочный эффект или запись), но они были хорошими примерами макросов в любом случае.