请选择 进入手机版 | 继续访问电脑版
收藏本站腾讯微博新浪微博
点点网模板设计大赛 phpchina

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 用悬赏 三天解决问题 解决访问速度慢 论坛支持农历生日 - 给官方提建议

论坛活动及任务 归纳网站最新活动 地图任务 邮件更新任务:保护帐号安全

积分换实物,来参加蓝色理想积分兑换吧! 联系招聘客服 蓝色理想帮你找工作! 万元奖励等你拿——点点网模板设计大赛

查看: 5830|回复: 8

让Editplus自动格式化css和js [复制链接]

martin0728 楼主
帖子
2236
体力
7624
威望
19
发表于 2008-12-25 13:44:55 |显示全部楼层
虽然很喜欢editplus的小巧快速,但是很遗憾它不支持代码的自动格式化,现在写php,css,html都是用的Aptana,这个感觉不错。

今天正好看了一下editplus 的用户工具,它允许通过命令行调用和标准输出输出与其它程序进行交互,可以传入参数可以手动指定,也可以是当前选定内容,当前本件所有文本等,即然这样我们就利用它的filter模式,即把所有文本内容传过去,再使用回传内容替换当前文本。那么我们还需要一个外部工具,为了方便起见,脚本类语言当然是首选,而在windows平台下面可以使用vbs和JScript, 那么就用JScript吧,去网上找一个 http://github.com/einars/js-beautify/tree/master 的东西,它提供在线的js格式化功能,正好是js写的, 拿它回来稍做改造一下,使用WScript的Std接口接收和发送内容
var input = "";
while(!WScript.StdIn.AtEndOfStream)
{
   input += WScript.StdIn.ReadAll();
}
从输入端读入数据.
WScript.Echo(formated_code); 发送数据.
那么js的格式化就搞定了, 再来看看css的,很怀念VS里面可以将一个CSS定义都放到一行上面去,这样看起来比较方便,否则代码太长了要拖半天.  这样的话看起来也不是太难,就自己动手写一个了. 两个文件我已经打包. 下载完可以解压到任意目录,接着就配置Editplus.

打开Tools->ConfigUserTools, 工具名称可以随意,比如jsFormatter, 在Command处写上 Cscript.exe /nologo  e:\jsFormatter.js  后面的路径就是js的引用路径,  并钩选下面的run as text fileter,让它作为文本过滤器使用,OK,现在打开一个待格式化的js 文件,  按下Ctrl+1(默认的第一个用户工具快捷键), 可以看到文本已经格式化好了,  

后记:
     要是可以格式化html和php那就更好了, js-beautify 里面也可格式化html,可惜效果不太好,我就没放进去,要是能有Aptana编辑器那么出色的效果就好了, 它可以完美处理js脚本, css, html的混合格式化,  想了一下似乎可以建一个java的控制台程序引用Aptana的插件 jar 包就能实现, 通过ICodeFormatter可以完成对各种类型代码的格式化,  留待以后研究.

    不会造工具的猩猩永远是猩猩,会自己制造工具的程序员可以有效提高自己的生产力,windows下面的VBScript, JScript和Python, Perl 等脚本语言都是很好的助手. 在这个应用中先查看Editplus帮助,再搜索MSDN脚本技术参考,顺便复习一下正则表达式应用,  既能解决问题又能提高技能水平,  希望大家都行动起来自己动手DIY, good luck!

两个文件见附件: darkangle_js_css_Formatter.rar

[ 本帖最后由 martin0728 于 2008-12-25 14:21 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
西部数码顶级域名注册商39元抢注!
qu77 
帖子
169
体力
646
威望
0
发表于 2008-12-25 14:22:37 |显示全部楼层
强人 收藏
人生地不熟,熟地没人生。
租服务器,上51IDC | [长沙]招聘:PHP经理10K/WEB前端6K/PHP开发6K

使用道具 举报

togoog 

天使共舞

金牌会员 手机认证 

帖子
783
体力
3152
威望
0
居住地
上海市 闵行区
发表于 2008-12-26 10:39:27 |显示全部楼层
不错,谢谢分享。。

使用道具 举报

帖子
14
体力
71
威望
0
发表于 2008-12-26 15:38:51 |显示全部楼层

一般不顶贴,今天顶个

大哥牛。一般不顶贴,今天顶个

使用道具 举报

帖子
30
体力
141
威望
4
发表于 2008-12-27 21:46:06 |显示全部楼层
请教楼主 两个问题
1,WScript.StdIn.ReadAll()就已经能够读到全文了,似乎可以不用while
2,楼主的 replace(/( )?(:|}|{|;)( )?/g,'$2')
其中的( )?里的括号是什么意思,我改成了
replace(/ ?([:;{}]) ?/g,'$1')
似乎也没有问题,只用到了$1
我怕我可能漏考虑了什么

另外,在下不才,根据楼主的改了一个去除所有注释并且压缩成一行,以及去掉最后一个;的脚本。现分享出来
  1. WScript.StdOut.Write(
  2.         WScript.StdIn.ReadAll()
  3.                 .replace(/ {2,}|[\f\n\r\t\v]+/g,"")
  4.                 .replace(/ ?([:;{}]) ?/g,'$1')
  5.                 .replace(/\/\*.*?\*\//g,'')
  6.                 .replace(/;}/g,'}')
  7. );
复制代码

[ 本帖最后由 shawphy 于 2008-12-27 22:12 编辑 ]

使用道具 举报

帖子
56
体力
124
威望
0
发表于 2008-12-27 22:21:39 |显示全部楼层
问楼主一个问题,我最近也在用aptana,怎么找不到格式化代码的工具阿,DW 我到知道怎么格式化不过不能格js




已经知道如何了,是ctrl+shift+f

[ 本帖最后由 fangyu12 于 2008-12-28 10:34 编辑 ]

使用道具 举报

martin0728 楼主
帖子
2236
体力
7624
威望
19
发表于 2008-12-27 23:20:03 |显示全部楼层

回复 6# fangyu12 的帖子

Ctrl+Shift+F 就可以了.
shawphy: 1. 这段从MSDN里面抄出来的,具体为啥, 大概是解决在命令行里面输出enter后还可以继续获得输入吧.
2. 那几个写得比较快,没有做什么优化, 也就是个简单的脚本, 可以正常工作就可以了。 (/( )?(:|}|{|;)( )?/g,'$2') , 去掉冒号和括号两边的空格, 并非无用.

使用道具 举报

帖子
56
体力
124
威望
0
发表于 2008-12-28 10:41:02 |显示全部楼层
昨天电脑休眠后就睡了,早上看了下aptana的按键说明,就知道了,刚才没刷新浏览器就回帖了,没看到到楼主已经回了,谢谢咯。

使用道具 举报

帖子
2
体力
9
威望
0
发表于 2010-3-15 16:08:29 |显示全部楼层
感谢楼主提供高效工具

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2012-2-11 02:26 , Processed in 0.072158 second(s), 8 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部