在Notepad++中查找多行

30

有没有一种方法可以找到一个段落?

例如,我想搜索以下代码:

<?php
    $radio_buttons++;
  }
?>

但当我尝试复制它到搜索框时,只能复制第一行<?php

似乎肯定有一种方法可以做到这一点,但我就是找不到它。也许这是一个插件?


我现在正在使用Mac,所以无法检查,但我似乎记得Notepad++允许您在搜索字段中指定正则表达式? - Matti Lyra
是的,它确实可以,但我仍然无法粘贴多行内容。 - Sackling
1
请参考此网址:http://stackoverflow.com/questions/405002/missing-desired-features-in-notepad。看起来Notepad++还不支持多行搜索,可能有相应的插件,但我没有听说过。 - Sahat Yalkabov
11个回答

59

1
这是很棒的东西。谢谢你。几个月后还是出现了问题,但是这个解决方案完美地解决了它。如果我只有一个微不足道的挑剔,那就是使用Ctrl + A选择全部内容,即删除之前的搜索结果,似乎不起作用。 - Sackling
1
感谢您开发这些非常有用的工具。我已经将它们安装到我的桌面和便携式版本的Notepad ++中。我会向我的同事推荐它们。 - Francisco Alvarado
2
该插件不适用于Notepad++ 5.x.x版本。但是它在6.x.x版本中非常好用。 - MohamedEzz
3
非常感谢这个优秀的插件,我需要处理许多需要多行搜索和替换功能的文档。很高兴你为社区提供了这样一个好工具。非常感谢! - klewis
很棒的插件Paul.. 是否还有一个选项可以在不打开文件的情况下替换文件中的文本?即给它要替换文本的目录?谢谢。 - Mike
显示剩余6条评论

23
Xenovoyance建议的那样,可以使用CTRL+R(也可在菜单选项TextFX > TextFX Quick > Find/Replace中找到)进行多行查找和替换:
只需选择要查找的文本,然后调用该选项... Multi line find/replace 更新:用户Żabojad让我意识到,在最新版本的Notepad++中,默认未安装“TextFX”插件,因此您需要先执行以下两个操作之一:
  1. 最简单的方法:转到菜单选项Plugins > Plugin Manager > Show Plugin Manager,将可用插件列表滚动到“TextFX Characters”,然后安装它。 Install from Plugin Manager
  2. 如上述方式应该可以正常工作,但如果不行,则需要前往此页面:http://sourceforge.net/projects/npp-plugins/files/TextFX/TextFX%20v0.26/,并下载文件TextFX.v0.26.unicode.bin.zip Download TextFX Characters 然后将其内容提取出来(不要只复制zip文件)到Notepad++安装文件夹的\plugins子文件夹中。 Copy dll to Notepad++ plugins folder
重启Notepad++后,您将看到菜单中的条目。

3
很遗憾,这个插件似乎也不支持同时编辑多个打开的文档。 - Sony packman
直到我进入“设置”>“快捷键映射器”,并单击“从磁盘重新加载”行并单击“清除”以删除冲突的Ctrl + R快捷方式,Ctrl + R才对我起作用。 - gamingexpert13

9
自从Notepad++ 6.0版本以后,多行正则表达式搜索功能已经可以使用。
您的代码搜索应该像这样:
<?php.*\r\n.*$radio_buttons++;.*\r\n.*}.*\r\n.*?>

.* 只是通配符,用于匹配除换行符以外的任意字符。在 Notepad++ 对话框中(称为. matches newline),您还可以切换复选框来包括换行符。

有关详细说明,请参见此问题的顶部答案:

在Notepad++中查找CRLF


7
将上面你想要查找的文本用Cntrl+C复制,然后将其粘贴到Notepad++的新空白文档中,再次选择它并按下Cntrl+F。你会看到你的文本出现在“查找”字段中,其中制表符作为换行符。无需插件。

在Notepad++ 6.6.9中确认。您可以在Notepad++的“config.xml”文件的“<FindHistory ...>”部分中检查实际搜索字符串。 - AdrianHHH

4
据我所知,Notepad++不支持多行正则表达式,因此您需要将每个换行符替换为操作系统的代表性换行符(很可能是\r\n)。有关详细信息,请参见在Notepad++中查找CRLF

问题在于,如果你将段落粘贴到搜索框中,你只会得到“<?php”。仅仅为了在搜索框中输入一个段落,需要这么多的工作。 - Sahat Yalkabov
不是真的 - 你可以使用扩展搜索来将所有\r\n替换为一些未使用的字符(波浪线、管道等),然后使用非扩展搜索再次将该字符替换为\r\n(非扩展\r\n不会创建新行)。 哇 - 搜索字符串。 此外,你可以很容易地将其制作成宏。 - Ian Pugsley

3

只有在行尾设置为 Unix 格式时,才能将多行传递到搜索和替换字段中。可以通过 编辑>EOL 转换>Unix 来完成。

然后,您可以手动将多行段落复制到搜索字段中。

之后,只需通过 编辑>EOL 转换>Windows 将行尾转换回 Windows 即可。


1
很好,不需要任何额外的插件。 - Ehsan Rosdi

3

尝试使用CTRL + R,但似乎没有起作用。还不确定应该选择哪些选项。 - Sackling
我刚在我的电脑上尝试了一下(notepad++ 5.8.6),我可以搜索多行文本。也许是运行较旧的版本? - Xenovoyance
是的,我之前使用的是5.8.6版本,现在刚刚更新到了.7版本。它似乎有时候可以正常工作,比如在文本文件的段落中,但是当搜索带有空格的代码块时就不太行了。也许是我漏掉了某个选项。 - Sackling
刚才意识到 "选择" 被勾选了,现在似乎可以工作了!谢谢! - Sackling
真正让Notepad++开始发光的是它的插件。很高兴能够帮忙! - Xenovoyance

2

对于Notepad++ v5.8.7+,默认未安装Unicode的TextFX插件,因此如果想使用CTRL+R,需要通过插件管理器安装TextFX Characters插件


1

有一个解决办法:
将搜索模式更改为Extended,并用\r\n替换“return-newline”
例如:<?php\r\n $radio_buttons++;\r\n }\r\n?>
问题是你需要知道空格(上面没有显示)。

或许正则表达式可以解决?


0

请查看TextFX菜单选项。它似乎支持多行搜索。


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