Notepad++ 宏用于更改字符串的某个部分

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

尝试了另一个宏,复制、选择第二行、搜索并用“bar”替换“foo”,并选中In Selection复选框。但我认为这不适用于宏。

所以我正在寻找一种可靠的方法。谢谢您的帮助!

1. PS1

我也可以接受没有 Notepad++ 的解决方案。(Excel、Word 等等)

PS2 游戏

我的输入字符串可以包含多个“foo”。每个字符串都应替换为“barx”

答案1

我不确定为什么你的第二次尝试失败了。也许你在录制宏时使用了鼠标?我确信如果你在录制宏时只使用键盘,你会得到更好的结果。

我刚刚在 Notepad++ 6.6.9 中录制了以下宏。它适用于源代码行中可变数量的“foo”字符串。

  • 将光标设置在源行的开头

记录:

  • Ctrl+D
  • Ctrl+D
  • Ctrl+D
  • Home
  • Shift+End
  • Ctrl+ H(查找和替换)
  • 找到“foo”并替换为“bar1”;选择“在选择中”;点击Replace All
  • 关闭对话框
  • Home
  • Shift+End
  • Ctrl+ H(查找和替换)
  • 找到“foo”并替换为“bar2”;选择“在选择中”;点击Replace All
  • 关闭对话框
  • Home
  • Shift+End
  • Ctrl+ H(查找和替换)
  • 找到“foo”并替换为“bar3”;选择“在选择中”;点击Replace All
  • 关闭对话框

结束录制

以下是 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>

相关内容