如何在Notepad++中删除特定行?

109

我正在整理一些C#代码文件,希望删除其中的代码区域(region)。我想删除所有包含字符串“#region”的行。这只是个例子,我还可以想到其他几种用途,但这是否可能呢?


2
我很想投票将这个问题标记为不相关的... 它主要是关于Notepad++和具体工作模式的问题,但不一定与编程有关:/ - user57508
@AndreasNiedermair 同意 - Stefan Falk
8个回答

307

Notepad++ v6.5

  1. 搜索菜单 -> 查找... -> 标记选项卡 -> 在“查找内容”中输入:您要查找的文本,勾选 标记行 ,然后选择全部标记。这将为所有包含搜索词的行添加书签,并在边栏显示蓝色圆圈。

  2. 然后在搜索菜单中选择书签 -> 删除已标记行。这将删除所有被书签标记的行。

您也可以使用正则表达式进行搜索。这种方法不会像John的方法一样留下空行,而且实际上会删除该行。

旧版

  1. 搜索菜单 -> 查找... -> 在“查找内容”中输入:您要查找的文本,勾选 标记行 ,然后点击查找全部
  2. 然后在搜索 -> 书签中选择删除已标记行

9
谢谢!哇,我之前不知道NP++可以这样做……这真是一个很好的时间节省工具。查找、书签行和删除行,太棒了!谢谢!! - Matthew M.
15
这是我发现的那些小宝藏之一,我希望我能给予超过一个赞。多年来,我浪费了太多时间,从未意识到这是可用的!唯一的问题是现在我想我需要更加高效地工作... - Milner
2
如果你正在搜索这个,现在“Mark”在搜索弹出菜单上有自己的选项卡了。 - bunnybare
1
@bunnybare,谢谢。我已经更新了最新版本的答案。 - Ray
太棒了!真希望我早些知道这个。Npp编辑/搜索菜单充满了奇妙的功能。 - Andreas
显示剩余4条评论

40

您可以使用菜单搜索 -> 替换... (Ctrl + H)。

它具有替换的正则表达式功能。您可以使用与#region匹配以及在该行上的其他内容的正则表达式,并将其替换为空格。


谢谢,我已经这样做了,它可以工作。但现在我正在尝试用一个\n替换\n\n,但似乎不起作用,有什么想法吗? - Rismo
1
使用扩展搜索替换转义序列(正则表达式上方的单选按钮)。 - John T
1
如果您在Windows上输入了文档,则行尾将为\r\n。UNIX风格的行尾符是\n。 - John T
5
我刚才注意到TextFx -> TextFx编辑->删除多余空行也可以做同样的事情 :) - Rismo
@Rismo/John T 我倾向于在进行这种操作之前将所有换行符转换为 \n(编辑->EOL 转换->Unix 格式)。 - Stewart
显示剩余2条评论

9

链接似乎已经损坏了(或者可能需要大量的JavaScript代码才能使用)。 - Peter Mortensen

5

以下是一种完全删除包含“YOURTEXT”的行的方法:

  • 打开替换对话框
  • 输入以下搜索字符串:.*YOURTEXT.*[\r]?[\n](将YOURTEXT替换为您的文本)
  • 启用“正则表达式”
  • 禁用“匹配换行符”

给定的正则表达式匹配Windows和Unix行尾。

如果您的文本包含具有正则表达式特殊含义的字符,例如反斜杠,则需要对它们进行转义。


你为什么要使用字符类来表示单个字符? - Toto

2

Jacob对John T的回复完美地删除了整行,您可以使用此方法在文件中查找。请确保在底部勾选“正则表达式”。

解决方案:^.*#region.*$


2
他说他想删除这行代码,而不是用其他内容替换它。 - felickz

1
调查一下你的EOL是什么,\n还是\r\n。然后在regexpr模式下用空白替换.*#region.*\r\n

0

使用正则表达式和查找替换,您可以删除所有包含 #region 的行而不留下空行。 因为由于某种原因 Ray 的方法在我的机器上无法工作,我搜索了 (.*#region.*\n)|(\n.*#region.*) 并将替换框留空。

该正则表达式确保如果 #region 在第一行中找到,则删除结尾的换行符,如果在最后一行中找到,则删除前面的换行符。

不过,如果 Ray 的解决方案适用于您,那么它仍然是更好的选择。


0

您可以尝试使用替换功能,将 #region 替换为 \n,并打开扩展搜索模式。


2
OP说他想“删除所有行”,您将用新行替换它。 - felickz

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