Notepad++ макрос для изменения определенной части строки
Я хочу определить макрос Notepad++, который принимает любую строку, содержащую "foo", и создает свои новые версии, изменяя только foo на "bar1", "bar2" и т. Д.
так что если мой файл содержит
abc_foo_def
когда я запускаю макрос, я хочу получить
abc_foo_def
abc_bar1_def
abc_bar2_def
abc_bar3_def
Испытание 1
Я пробовал макрос с Ctrl + D
(дублирующая строка) перейдите к нижней строке и запустите "foo", нажмите "Удалить" 3 раза, затем напишите "bar1", повторяйте до bar3. Обратите внимание, что даже если бы это работало, это не сработало бы для нескольких "foo" в строке ввода. Однако это не работает, как ожидалось.
Испытание 2
Попробовал другой макрос с дублированием, выбрав вторую строку, Поиск и замена "foo" на "bar", с In Selection
флажок проверен. Но я думаю, что это не относится к макросам.
Поэтому я ищу надежный способ. Спасибо за любую помощь!
PS 1
Я также в порядке с решением без Notepad++. (Excel, Word, что угодно)
PS 2
Моя входная строка может содержать более одного "foo". Каждый должен быть заменен на "barx"
1 ответ
Я не уверен, почему ваш Trial 2 провалился. Возможно, вы использовали мышь при записи макроса? Я уверен, что вы получите лучшие результаты, если будете использовать клавиатуру только при записи макроса.
Я только что записал следующий макрос в Notepad++ 6.6.9. Это работает для переменного числа строк "foo" в исходной строке.
- Установить курсор в начале строки источника
Запись:
- Ctrl+D
- Ctrl+D
- Ctrl+D
- Главная
- ↓
- Shift+End
- Ctrl+H (для поиска и замены)
- Найдите "foo" и замените на "bar1"; выберите "In Selection"; нажмите Заменить все
- Закрыть диалог
- Главная
- ↓
- Shift+End
- Ctrl+H (для поиска и замены)
- Найдите "foo" и замените на "bar2"; выберите "In Selection"; нажмите Заменить все
- Закрыть диалог
- Главная
- ↓
- Shift+End
- Ctrl+H (для поиска и замены)
- Найдите "foo" и замените на "bar3"; выберите "In Selection"; нажмите Заменить все
- Закрыть диалог
Завершить запись
Вот XML из %AppData%\Notepad++\shortcuts.xml
:
<Macro name="SuperUser_Q_Macro" Ctrl="no" Alt="no" Shift="no" Key="0">
<Action type="0" message="2469" wParam="0" lParam="0" sParam="" />
<Action type="0" message="2469" wParam="0" lParam="0" sParam="" />
<Action type="0" message="2469" wParam="0" lParam="0" sParam="" />
<Action type="0" message="2453" wParam="0" lParam="0" sParam="" />
<Action type="0" message="2300" wParam="0" lParam="0" sParam="" />
<Action type="0" message="2315" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="foo" />
<Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="bar1" />
<Action type="3" message="1702" wParam="0" lParam="898" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<Action type="0" message="2453" wParam="0" lParam="0" sParam="" />
<Action type="0" message="2300" wParam="0" lParam="0" sParam="" />
<Action type="0" message="2315" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="foo" />
<Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="bar2" />
<Action type="3" message="1702" wParam="0" lParam="898" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
<Action type="0" message="2453" wParam="0" lParam="0" sParam="" />
<Action type="0" message="2300" wParam="0" lParam="0" sParam="" />
<Action type="0" message="2315" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1601" wParam="0" lParam="0" sParam="foo" />
<Action type="3" message="1625" wParam="0" lParam="0" sParam="" />
<Action type="3" message="1602" wParam="0" lParam="0" sParam="bar3" />
<Action type="3" message="1702" wParam="0" lParam="898" sParam="" />
<Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
</Macro>