Notepad++中的CSS整理插件

14

有没有适用于Notepad++的CSS整理工具?我已经尝试了TEXTFX中的每个菜单项,但似乎都不行。我习惯使用PSPAD,只需选择CSS并点击“重新格式化为结构化CSS”。

编辑 在提问这个问题后很长一段时间我发现了一个可能会帮助其他人的重要区别 ... tidy cssformat css之间存在很大差异。实际上我找的是后者,有几个在线系统可以使用,例如http://procssor.com/

4个回答

30
我自己也在寻找这个功能,所以我为Notepad++编写了这一对基于正则表达式搜索和替换的宏,格式化CSS可以格式化CSS文档,而压缩CSS则可以使其更小。
要安装它们,请找到您的shortcuts.xml文件,通常位于

C:\Users\%username%\AppData\Roaming\Notepad++\shortcuts.xml

然后将整个块粘贴到<NotepadPlus><Macros>块中。 您需要使用不同于Notepad ++的编辑器,或通过结束进程关闭Notepad++来编辑此文件。否则,Notepad++会在关闭时覆盖该文件。 安装后,您可以从Notepad ++的宏菜单中运行这些宏,以及重命名它们或使用编辑快捷方式/删除宏分配热键。
如果有人发现一个CSS无法工作,请制作一个paste并在评论中发布链接,以便我查看。
宏源XML
<Macro name="Format CSS" Ctrl="no" Alt="no" Shift="no" Key="0">
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="([^\r\n;])\}(?![\r\n])" />
    <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="\1;\r\n}\r\n" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="([^\r\n])\}(?![\r\n])" />
    <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="\1\r\n}\r\n" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="([^\r\n])\{(?![\r\n])" />
    <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="\1\r\n{\r\n" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam=";(?![\r\n])" />
    <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam=";\r\n" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="(^(?![ \t]).+;)" />
    <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="    \1" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="\}(?!(\r?\n\r?\n))" />
    <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
    <Action type="3" message="1602" wParam="0" lParam="0" sParam="}\r\n" />
    <Action type="3" message="1702" wParam="0" lParam="768" sParam="" />
    <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" />
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam=":(?![ ])(?=.+;)" />
    <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
    <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>
<Macro name="Minify CSS" Ctrl="no" Alt="no" Shift="no" Key="0">
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="[\r\n\t ]+" />
    <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
    <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="" />
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="[ ]*\}[ ]*" />
    <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
    <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="" />
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="[ ]*\{[ ]*" />
    <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
    <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="" />
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="[ ]*;[ ]*" />
    <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
    <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="" />
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam=";\}" />
    <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
    <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="" />
    <Action type="3" message="1700" wParam="0" lParam="0" sParam="" />
    <Action type="3" message="1601" wParam="0" lParam="0" sParam="[ ]*:[ ]*" />
    <Action type="3" message="1625" wParam="0" lParam="2" sParam="" />
    <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>

太棒了。不过还有一些错误,我不知道如何修复它。主要与空格有关。它还不知怎么多插入了一个分号。我希望 StackOverflow 有更好的评论系统,这样我就可以向你展示。 - Derek Ziemba
1
@DerekZiemba 你可以制作一个paste并在这里发布链接。它的工作原理是:message="1601"字段是"查找"正则表达式,1602字段是"替换"表达式。每个搜索和替换操作都是一个完整的块1700-1701,并且这些块从上到下执行,每个块在文件中执行全局搜索和替换。 - Felix Dombek
非常快,即使 Aptana Studio 无法格式化源代码,这个宏也能做到,谢谢! - Firas Abd Alrahman
@Stony 谢谢。不幸的是,一旦引入嵌套作用域,使用正则表达式处理会变得非常困难。可能不会修复这个问题。 - Felix Dombek
只是想说这个宏非常棒。 - Remko Duursma
显示剩余2条评论

4
JSTool插件的JSFormat功能如何? 我知道这很出乎意料,名称是指Javascript。 它具有格式化和压缩功能,也适用于css。

可以使用这个工具,但是需要进行一些清理。具体操作请参考此链接:Notepad++插件自动格式化CSS - Stack Overflow - eapo

1

我已经搜索了互联网,就我所知,这个问题的答案是否定的,或者至少如果有的话,我肯定找不到;但是如果有人提出更好的答案,我会接受它。对于我来说,我将继续使用 PsPad 进行此操作。


0

谢谢你的努力,但老实说我不认为那页上的任何一个东西都能起作用。 - byronyasgur

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