Как написать макрос для Notepad ++?

Я хотел бы написать макрос для Notepad ++, который должен заменить char1, char2, char3 с char4, char5, char6, соответственно. Благодаря

Ответ 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 файл существует, но ваш макрос не получает его.

Я предполагаю, что это ошибка, которая будет исправлена ​​следующей версией.