Я хотел бы написать макрос для Notepad ++, который должен заменить char1, char2, char3 с char4, char5, char6, соответственно. Благодаря
Как написать макрос для Notepad ++?
Ответ 1
Макросы в Notepad ++ - всего лишь куча закодированных операций: вы начинаете запись, работаете в буфере, возможно, активируете меню, останавливаете запись, а затем играете макрос.
После расследования я узнал, что они сохранены в файле shortcuts.xml в разделе "Макросы". Например, у меня есть:
< Macro name = "Trim Trailing и save" Ctrl = "no" alt= "yes" Shift = "yes" Key = "83" > < Тип действия = "1" message = "2170" wParam = "0" lParam = "0" sParam = ""/> < Тип действия = "1" message = "2170" wParam = "0" lParam = "0" sParam = ""/> < Тип действия = "1" message = "2170" wParam = "0" lParam = "0" sParam = ""/> < Тип действия = "0" message = "2327" wParam = "0" lParam = "0" sParam = ""/> < Тип действия = "0" message = "2327" wParam = "0" lParam = "0" sParam = "/> < Тип действия =" 2" message = "0" wParam = "42024" lParam = "0" sParam = "/> < Тип действия =" 2" message = "0" wParam = "41006" lParam = "0" sParam = ""/>
</Макро >
Код>
Я не смотрел на источник, но из внешнего вида я бы сказал, что у нас есть сообщения, отправленные в Scintilla (компонент редактирования, возможно, тип 0 и 1), и сам Notepad ++ (возможно, активирование пунктов меню). < ш > Я не думаю, что он будет записывать действия в диалогах (например, поиск/замена).
Глядя на Scintilla.iface файл, мы можем видеть, что 2170 - это код ReplaceSel (т.е. строка вставки не выбрана ничем), 2327 - это команда Tab, а Resource Hacker (просто им удобно...) показывает, что 42024 - это меню "Trim Trailing Space" item и 41006 - "Сохранить".
Я предполагаю, что тип действия 0 для команд Scintilla с числовыми параметрами, тип 1 для команд со строковым параметром, 2 для команд Notepad ++.
Проблема: у Scintilla нет команды "Заменить все": задача клиента выполнить итерацию с подтверждением или без нее и т.д.
Другая проблема: кажется, что действие типа 1 ограничено 1 char (я редактировал вручную, когда выходил из N ++, он был усечен).
Я пробовал некоторые трюки, но я боюсь, что такая задача выходит за рамки возможностей макроса.
Возможно, это то, где SciTE со своей способностью к написанию Lua (или Блокнотом программиста, который, похоже, написан на скриптах с Python) имеет край...: -)
[EDIT] Похоже, я получил макрос выше от этой темы или подобное место...:-) Я предполагаю, что первые строки не нужны (побочный эффект или запись), но они все равно были хорошими примерами макрокода.
Ответ 2
Я нашел 'плагин Python Script' для Notepad ++ более полезен, так как с помощью плагина я мог писать простые макросы в виде python, и у него также была очень хорошая документация и примеры макросов, написанных в python. Если вам вполне комфортно с python, то я думаю, что "Python Script" предоставит справедливость. Для получения дополнительной информации см. http://npppythonscript.sourceforge.net/
Ответ 3
Я записал макрос, и нашел его в% APPDATA%\Notepad ++\shortcuts.xml. Он выглядит как опубликованный в первом посте этой темы.
Я использую NPP Ver. 5.9.6.2 с Win7.
Ответ 4
Этот пост может помочь вам в некоторой степени:
Использование Regex для префикса и добавление в блокнот ++
Предполагая буквенно-цифровые слова, вы можете использовать:
Поиск = ^ ([A-Za-z0-9] +) $ Replace = able: "\ 1"
Или, если вы просто хотите выделить строки и использовать "Заменить все" и "В выборе" (с той же заменой):
Поиск = ^ (. +) $
^ указывает на начало строки. $ указывает на конец строки.
\ 1 будет совпадением источника в круглых скобках.
Ответ 5
Мой личный опыт заключается в том, что shortcuts.xml перезаписывается с первоначально загруженными + более поздними записанными макросами и настройками при выходе Notepad ++. Поэтому вы не можете использовать Notepad ++ для редактирования этого файла.
Закройте Notepad ++, отредактируйте shortcuts.xml другим инструментом, сохраните его и перезапустите Notepad ++.
Ответ 6
Я не уверен, помогает ли это, но мне нужно было создать макрос для хранения фрагмента, поэтому я просто записал себе вставку элементов и установил для него ярлык. Конечно, я не использую версию 5.9, поэтому могут быть некоторые незначительные различия в версии. Для доступа к макросъемке перейдите в Макро > Начало записи. Затем вы выполните свое действие, а затем перейдите в Macro > Stop Recording. Я бы рекомендовал воспроизвести его, чтобы убедиться в его правильности, а затем сохранить и установить комбинацию клавиш.
Надеюсь на помощь.
Ответ 7
Я только что сделал это в версии 5.9.1. Просто зайдите в меню макросов, нажмите "Начать запись", выполните 3 замены всех команд, а затем прекратите запись. Затем вы можете выбрать "Сохранить текущий записанный макрос" и воспроизвести его так часто, как вам нравится, и он будет выполнять замены, как вы ожидаете.
Ответ 8
Собственно, файл shortcuts.xml не хранит созданные пользователем макросы, и никакие очевидные кандидаты не содержат эту информацию. Эти инструкции устарели.
В отличие от советов различных веб-сайтов, сохранение пользовательских макросов не разрешено для v.5.4.2. Этот XML файл существует, но ваш макрос не получает его.
Я предполагаю, что это ошибка, которая будет исправлена следующей версией.