如何在Notepad++中自动格式化/缩进XML/HTML

736

有没有一种方法可以重新缩进一段代码?我正在寻找类似于Eclipse(自动格式化/缩进)中的Ctrl+Shift+F的东西。

需要澄清的是:

  • 我已经知道如何在Notepad++之外格式化XML,所以不需要一堆其他XML格式化工具的链接。
  • 我正在专门处理XML和HTML。
  • 理想情况下,有一个像Eclipse中那样方便的键绑定,这样我就不必打断我的工作流程。

我已经了解了NppAutoIndent - 它无法使用,因为我正在处理XML、HTML和CSS。


在SoftwareRecs.SE上提问并得到回答(http://softwarerecs.stackexchange.com/q/1496/19903) - feetwet
9个回答

1008

自从我升级到6.3.2版本后,我使用XML工具

  • 通过插件管理器安装XML工具(插件→插件管理器...然后搜索“XML工具”,勾选其框并单击“安装”按钮)。
  • 使用快捷键Ctrl+Alt+Shift+B(或者 菜单→插件→XML工具→美化打印)

输入图像描述此处

输入图像描述此处

在旧版本中: 菜单→TextFX→HTML Tidy→Tidy: Reindent XML。


11
我安装了5.9.8版本,并添加TextFX插件。插件->插件管理器->显示插件管理器。选择TextFX并安装。重启npp后,菜单“TextFS”应该可见。 - remipod
20
当安装HTMLTidy插件时,要注意最近版本中可能出现的缺失libtidy.dll错误。 - Amos M. Carpenter
23
XML工具可以格式化XHTML,但不能格式化HTML。尝试格式化以下代码:<form><input><input><input><input><input></form>。为使其正常工作,您的代码需要采用以下格式,这可能对很多开发人员来说是个难题:<form><input /><input /><input /><input /><input /></form> - thdoan
1
在菜单中找到格式选项:扩展->XML工具->漂亮的打印(带换行符)。 - fl0w
2
非常小心,它会将空的<div></div>转换为<div/>。这可能会对呈现CSS样式的Web浏览器造成破坏性影响,请注意。 - Timothy Gonzalez
显示剩余17条评论

60

安装Tidy2插件。我使用的是Notepad++ v6.2.2,目前Tidy2运行良好。


6
我同意这个观点,Tidy2在HTML标记方面完成了工作,并且做得非常出色。 - DWils
3
我赞同这个观点。XML工具对我没用,而且我也无法通过TextFX让它起作用。 - Christian Vielma
5
谢谢。 "XML工具"无法处理某些文件,这就是适用于我的情况的解决方法。 - Subhashi
5
注意:某些HTML字符实体在使用Tidy进行整理时会被替换为它们的Unicode字符,无论Tidy2配置或文档编码如何。例如,在整理前的"’"将在整理后变为"’"(智能单引号)。这让我无法使用Tidy2。自2012年以来,该项目未得到更新。 - trebormf
2
不允许使用制表符来缩进,这对我来说太糟糕了。 - cori
显示剩余5条评论

36

对于那些不知道的人,npp有很多插件和其他项目的支持。您可以从SourceForge下载这些插件。

在这里输入图片描述

您需要 XML工具 来格式化n++中的文本

在您下载了 XML工具 后..

退出Notepad++

进入 C:\ Program File \ Notepad ++ .... 您的N ++安装文件夹。

  1. 通过复制替换将xml tools中下面的文件放置到npp根文件夹中

在这里输入图片描述

  1. 进入 ..\ Plugins 子文件夹,并放置以下下载的文件

在这里输入图片描述

重新启动并享受!!!

Ctrl + Alt + Shft + B进行格式化。


4
我似乎没有插件管理器 - 我使用的是Notepad++ 7.3.3版本。 - Owl

15

这已经是我第三次安装Windows和npp,一段时间后我意识到整理功能不再起作用。于是我搜索了解决方案,在这个帖子中得到了帮助,在几个其他的帖子的帮助下,我最终解决了问题。我会总结所有的行动。

  1. 安装TextFX插件:插件->插件管理器->显示插件管理器。选择TextFX字符并安装。重启npp后,菜单“TextFX”应该可见。(鸣谢:@remipod)。

  2. 通过复制旧npp包中的Config文件夹来安装libtidy.dll:按照此答案中的说明操作。

  3. 在最新的npp安装目标位置(通常是C:\Program Files (x86)\Notepad++\plugins)中拥有Config文件夹后,npp需要对该文件夹具有写入访问权限。右键单击Config文件夹->属性->安全选项卡->选择用户,点击编辑->勾选完全控制以允许读写访问。请注意,您需要管理员权限才能这样做。

  4. 重新启动npp并验证TextFX -> TextFX HTML Tidy -> Tidy: Reindent XML是否起作用。


如果您正在使用“allowAppDataPlugins”设置(允许每个用户的插件),则可以通过将第2步中的“tidy”文件夹放入您的用户插件目录并跳过第3步来完成此操作。 - palswim
@palswim:不错,谢谢!当一个用户使用npp时,您的解决方案更加简洁。 - Vladimir Grigorov

12

并不是一个完美的解决方案,而是一个临时措施。

默认情况下,Notepad++ 并没有提供这样的功能。但是你可以使用一些在线工具来自动格式化文本,例如 https://www.freeformatter.com/xml-formatter.html


3
尽管这个答案只是一个解决问题的临时方法,而非完整解决方案,但它是我唯一行之有效的选项。XML工具和Tidy2都存在问题。 - Nigel Alderton

8

只需安装最新版本的Notepad++并安装Indent By fold插件。在菜单栏中选择Plugins -> Plugins Admin并选中Indent By fold进行安装。这样就可以正常使用了。


1
现在应该接受这个答案,因为我无法让XML工具或tidy2工作。不管怎样,我们能否为此分配快捷方式? - Irfandi D. Vendy
我冒着跑题的风险,但如果有人能报告一个比Notepad++ 7.5.6 更新 的版本与Franco Stellari的AutoSave 1.60插件https://sites.google.com/site/fstellari/nppplugins兼容,我将非常乐意切换到该版本。如果没有 - 我绝不会将Notepad++ 7.5.6更新到更高版本。IndentByFold的0.7版本也适用于我。但我反对在空行中添加(尾随)空格,这是IndentByFold所做的。 - Henke
Indent By Fold 对我非常有效。我似乎在空行上没有得到任何空格(@Henke,这是你所说的“空行”吗?)。不过我没有安装 AutoSave 插件。NP++ v8.1.5 和 Indent By Fold v0.7.3。 - wkille
首先,我现在使用的是8.1.4版本(32位),自动保存功能完美运行。(因此,我已删除了一条抱怨此事的评论。) 其次,这里有一个示例截图,展示了缩进折叠存在的一些问题。因此,我已停止使用它,并改用从命令行运行的prettyhtml@starptech,因此不依赖于notepad++或任何其他编辑器。 - Henke
我似乎在空行上没有得到任何空格(@Henke,这就是你所说的“空行”吗?)。 ~ * ~ 是的。我指的是空行(而不是“行”)。英语不是我的母语,所以有时会用错单词。 - Henke

8

我需要在插件- > 插件管理器 - > 显示插件管理器 - > 设置下更新代理设置,才能看到“可用”列表中的任何插件。

之后,安装“XML工具”很容易,并且按照上述要求完成了所需的工作。


1
使用“XML工具”,HTML+Javascript代码的缩进不符合我的要求。发现“UniversalIndentGUI”插件可以通过将语言设置为HTB(HTML,XML,XSL),然后从插件菜单中运行“缩进文本”来完成工作。 - GuruM

6

直接回答OP的问题,可以看看这个网站:Thomas Hunter Notepad++ Tidy for XML。按照简单的步骤操作,你可以在NPP中获得非常好的XML格式化效果。到目前为止,我发现唯一的异常是嵌套自闭合元素的情况。

<OuterTag>Text for outer element<SelfClosingTag/></OuterTag>

将被整理为:

<OuterTag>Text for outer element
<SelfClosingTag/></OuterTag>

也许有一种方法可以修复这个问题,但目前为止,我已经成功地减少了我的文档中的行数,减少了300k,这个特定的异常情况可以通过其他方式解决。


1

我正在使用带有“插件管理”的Notepad 7.6,但我找不到XML工具。
我不得不像@some-java-guy在他的答案中所做的那样手动安装它,只是我的插件文件夹位于这里:C:\Users\<我的用户名>\AppData\Local\Notepad++\plugins
在该目录中,我创建了一个新目录(名为XmlTools),并将XMLTools.dll复制到其中。(我还将所有依赖项复制到Program files中的Notepad ++目录中。)


使用Notepad++ v7.8.4,"XML Tools"可以在"Plugin Admin"中找到。也许以前存在不兼容或其他问题。考虑到最新的提交是在https://github.com/morbac/xmltools上两天前进行的,似乎仍在积极开发中。 - Micah Lindstrom

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