如何在Notepad++中实现多行“替换文件中的内容…”

86
如果免费的源代码编辑器Notepad++具有“在文件中查找”功能,而不需要在编辑器中打开文件,那么它是否也具有“替换文件中的内容”的功能?
Notepad++基于编辑组件Scintilla,在SourceForge上对于此功能的请求有一个响应:“没有必要将其包含在SciTE中,因为您可以使用参数对话框将此命令添加到工具菜单中。”那么在Notepad++中是否可能进行多行替换呢?

问题是“Notepad++中缺少/需要的功能”,但这会分散注意力,让我无法得到我特别想知道的答案,而且可能会导致问题被关闭。 - Rob Kam
请告诉我这个问题为什么不具有建设性。 - Drew Alden
这是一个实用的解决方案。https://dev59.com/YWrWa4cB1Zd3GeqP7Bhf#13892643 - Aspak Rogatiya
4个回答

88

这已经在一个打开的文件中了。问题是如何在不在编辑器中打开文件的情况下完成它。例如,在bas文件夹中用bar替换所有*.c文件中的foo出现次数。 - Rob Kam
6
您也可以对未打开的文件执行此操作。在菜单中选择“搜索->在文件中查找”选项,或使用键盘快捷键Ctrl-Shift-F。 - Alex
这就是答案,应该将其标记为答案 +1。 - James Campbell
3
使用Notepad++的ToolBucket插件进行多行编辑会更加容易。查看我的回答以获取更多信息。 - Artur Haddad
1
但是,这确实需要您确保文本不包含任何扩展符号或事先转义它们。 - makrom
ToolBucket插件是一个更简单的方式来完成这项工作。 - undefined

85

实际上,使用Notepad++的ToolBucket插件进行多行替换更加容易。

要激活它,只需进入N++菜单:

插件 > 插件管理器 > 显示插件管理器 > 勾选 ToolBucket > 安装。

重新启动N++,按下ALT + SHIFT + F即可进行多行编辑。


1
完美地工作了,我不需要安装另一个编辑器!我很惊讶,因为VS或emacs都没有以简单的方式完成这个任务。 - sandos
5
这个问题涉及替换[多个]文件中的内容。 - Markus von Broady
2
@MarkusvonBroady,你可以使用这种方法在多个文件中查找和替换。 - Artur Haddad
1
@ArturHaddad 是的,如果您首先打开所有这些文件,这可能会对许多文件造成问题,但从技术上讲,您是正确的。除了需要打开可能很多文件之外,您还可能需要一个工具来自动发现和打开子文件夹中的文件。 - Markus von Broady
1
它适用于英语,但对日语无效。太遗憾了。 - Moses
3
请注意,从2018年开始,Notepad++不再包含插件管理器,您需要手动安装插件或重新安装插件管理器。 - James Wong

13

解决方法是:

  1. 搜索并替换 \r\n 为 thisismynewlineword

(这将删除所有换行符,并且应该只有一整行)

  1. 现在执行您的替换操作

  2. 搜索并替换 thisismynewlineword 为 \r\n

(撤消步骤1)


虽然这不是一个优雅的解决方案,但在使用Windows文本编辑器进行大规模多行搜索和替换时,我不得不采用这种方法。 - siliconpi
如果您的替换文本不包含被扩展方法解析的转义字符(例如\n\r\t等),那么您可以通过将\r\n替换为\\r\\n来简化操作,而无需进行任何还原操作。 - Markus von Broady

4
Notepad++仍然在运行,因此您可以从“插件”菜单中安装插件ToolBucket->插件管理器。它不会改进原生的Notepad++搜索和替换对话框,而是使用自己的快捷键Alt+Shift+F。

enter image description here


太棒了!这个方法完美地解决了问题。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接