之前一直在修改博客的主题,因为所用主题的CSS代码经过了压缩,不方便修改,就找网上的CSS格式化工具,也有在线用的,也很方便,但是在断网情况下就无法使用了,琢磨着给notepad++加上CSS格式化的功能,在NPP的插件管理器里找了半天也没找到能用的,算了,还是自己弄吧。

因为之前notepad++上使用了zencoding插件,当然现在这个插件已经被emmet替代了,不过我还是喜欢zencoding,因为平时也写不了多少代码,而emmet这个插件又必须装python,比较麻烦。zencoding插件是基于NppScripting这个插件的,可以用js脚本为notepadd++添加各种功能,很是不错的。

首先安装zencoding插件,地址zencoding ,自备梯子,你懂得,下载下来解压到plugins目录,打开notepad++,zencoding就装好了,菜单栏右上角有一个zencoding菜单: 2014-08-21_165145

下面我们就为notepad++添加CSS格式化功能:

将下面的文件保存到plugins\NppScripting\includes目录: 2014-08-21_165324

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
var MyToolBox = Editor.addMenu("ToolBox");

MyToolBox.addItem({
	text : "CSSEncode",
	cmd : function () {
		var unencoded = Editor.currentView.text
			var encoded = CSSencode(unencoded);
		Editor.currentView.text = encoded;
	}
});
MyToolBox.addItem({
	text : "CSSDecode",
	cmd : function () {
		var encoded = Editor.currentView.text
			var unencoded = CSSdecode(encoded);
		Editor.currentView.text = unencoded;
	}
});
MyToolBox.addItem({
	text : "URIEncode",
	cmd : function () {
		var unencoded = Editor.currentView.text
			var encoded = encodeURIComponent(unencoded);
		Editor.currentView.text = encoded;
	}
});
MyToolBox.addItem({
	text : "URIDecode",
	cmd : function () {
		var encoded = Editor.currentView.text
			var unencoded = decodeURIComponent(encoded);
		Editor.currentView.text = unencoded;
	}
});
function CSSencode(code) 
{ 
 code = code.replace(/\n/ig,''); 
 code = code.replace(/(\s){2,}/ig,'$1'); 
 code = code.replace(/\t/ig,''); 
 code = code.replace(/\n\}/ig,'\}'); 
 code = code.replace(/\n\{\s*/ig,'\{'); 
 code = code.replace(/(\S)\s*\}/ig,'$1\}'); 
 code = code.replace(/(\S)\s*\{/ig,'$1\{'); 
 code = code.replace(/\{\s*(\S)/ig,'\{$1'); 
 return code; 
} 
function CSSdecode(code) 
{ 
 code = code.replace(/(\s){2,}/ig,'$1'); 
 code = code.replace(/(\S)\s*\{/ig,'$1 {'); 
 code = code.replace(/\*\/(.[^\}\{]*)}/ig,'\*\/\n$1}'); 
 code = code.replace(/\/\*/ig,'\n\/\*'); 
 code = code.replace(/;\s*(\S)/ig,';\n\t$1'); 
 code = code.replace(/\}\s*(\S)/ig,'\}\n$1'); 
 code = code.replace(/\n\s*\}/ig,'\n\}'); 
 code = code.replace(/\{\s*(\S)/ig,'\{\n\t$1'); 
 code = code.replace(/(\S)\s*\*\//ig,'$1\*\/'); 
 code = code.replace(/\*\/\s*([^\}\{]\S)/ig,'\*\/\n\t$1'); 
 code = code.replace(/(\S)\}/ig,'$1\n\}'); 
 code = code.replace(/(\n){2,}/ig,'\n'); 
 code = code.replace(/:/ig,': '); 
 code = code.replace(/  /ig,' '); 
 return code; 
} 

这是我之前参照网上有一篇文章上添加URIEncode修改的。里面的格式化函数是照搬chinaz的……

再重启notepad++,就会发现多出一个Toolbox菜单,里面有几项: 2014-08-21_165248

打开一个经过压缩的CSS文档,执行ToolBox-CSSDecode就可以格式化好这个文档,很方便。如果你有能力还可以添加其他的功能,诸如javascript加密解密等,以后有时间再搞吧。