You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Notepad++ 创建针对当前选中文本执行替换操作的宏

Notepad++ 创建针对当前选中文本执行替换操作的宏

嘿,我完全懂你遇到的麻烦——录宏的时候它会把你当时选中的文本硬编码进去,每次运行都只会替换那固定的内容,根本没法灵活处理每次新选中的片段对吧?别发愁,咱们可以手动修改Notepad++的宏配置文件来解决这个问题!

首先你得知道,你之前录的宏里,<Action type="3" message="1601" ... sParam="some text"这一行是把搜索内容固定成了“some text”,所以不管你后来选什么,它都只会搜这个固定文本。要实现“每次运行宏时替换当前选中的内容”,咱们需要用Notepad++宏的特殊变量$(SELECTION)来指代当前选中的文本。

具体操作步骤如下:

  • 先关闭Notepad++:因为软件运行时会自动保存宏配置,所以必须先关掉它,不然你的修改会被覆盖。
  • 找到shortcuts.xml文件:它在AppData\Notepad++\目录下(你可以直接在文件管理器地址栏输入这个路径跳转)。
  • 找到你录制的SaR_macro宏代码块,把它替换成下面的内容:
<Macro name="SaR_macro" Ctrl="yes" Alt="no" Shift="yes" Key="89">
    <!-- 初始化搜索环境 -->
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <!-- 开启正则表达式模式(如果不需要正则,可将lParam="1"改为0) -->
    <Action type="3" message="1625" wParam="0" lParam="1" sParam="" />
    <!-- 将当前选中的文本设为搜索目标 -->
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="$(SELECTION)" />
    <!-- 这里设置你要替换成的内容,比如换成「 [已处理] 」,改成你需要的文本即可 -->
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="[已处理]" />
    <!-- 执行替换操作(仅替换当前选中的内容) -->
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
</Macro>
  • 保存shortcuts.xml,重新打开Notepad++就可以用了!

举个例子,就像你说的,选中“ - qwerty”按下宏快捷键,这段文本就会变成你设定好的内容;再选中“ - asdf”按快捷键,同样会替换成同一个内容,完美符合你的需求。

几个小提醒:

  • 如果你的替换内容里有正则特殊字符(比如.、*、+这类),要么给这些字符加转义符\,要么把开启正则的那行<Action type="3" message="1625" wParam="0" lParam="1" sParam="" />里的lParam="1"改成lParam="0",关闭正则模式。
  • 确保修改配置文件时Notepad++是关闭的,不然修改不会生效。

备注:内容来源于stack exchange,提问作者Krz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 07:54:49