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>
Другие вопросы по тегам