Windows Live Writer试用及众多插件试用评测
write by 九天雁翎(JTianLing) -- www.jtianling.com
一直比较被CSDN的博客系统所折磨,很多东西一直不太好用,在线编辑功能有多么不好用就不多数了,当年手一滑还可能在页面跳转时丢失全文,现在这点有所改善,在切换页面时有提醒,但是贴图片的操作还是如此的复杂,默认宽度还是无法调节,在我的1440*900的显示器上就像在800*600上编辑一样,让人崩溃。离线编辑明显还是更安全,更方便,也能在本地保存一份,所以使用上了Word2007,Word2007附带有博客发表功能,编辑功能足够的强大,贴图片更加方便了,但是可惜通过Word2007发表后的博文总是会格式不对,最气人的就是格式离谱到标题2比标题1要大,C++语言的#include <xxx>永远被解析,然后变成#include空气,也没有办法预览效果,直接编辑发布后的HTML。导致我非常郁闷,只能先通过,后来与CSDN负责人的工作人员联系了一下,他推荐我使用Windows Live Writer(以下简称WLW),我就试用了一下,感觉编辑功能太过简陋,首先复制粘贴会丢失格式,那么就没有办法直接粘贴代码附带颜色和格式了,并且不能自定义格式模板,即将段落,标题的格式改成自定义的,还不能通过模板新建文章,因为以上缺点,直接放弃了WLW。后来在网上看到有人说WLW是世界上最好的博客编写发布软件,甚至在Linux下他也是通过Wine去运行WLW写博客,我才准备回过头来确认一下,WLW真的有这么好吗?网上搜索了一下这几个缺陷,既然WLW支持插件系统,希望有插件可以解决问题吧,我将http://gallery.live.com/上感觉可能有用的插件全部下载回来,逐一尝试,顺便公布一下结果,免得大家做重复工作。以下是我下载回来的插件:
作为程序员的技术博客,插入代码没有高亮的问题首先是肯定要解决的,以下以一段OpenGL相关的C++程序片段为例,其中包含了#include,宏定义,函数定义,中文注释等,展示全部效果给大家看,
相关插件很多:
CodeSnippet:
界面,配置选项非常多,感觉不错。还可选择silent模式,以后直接从剪贴板中按照原来的配置添上代码,简洁明快,很好,就是目前没有发现怎么关闭silent模式-_-!
最后在Documents and Settings/<用户名>/Application Data/Leo Vildosola/Code Snippet plugin for Windows Live Writer下找到了其配置文件CodeSnippet.dll.config,编辑RunSilent为false如下后修复。
<RunSilent>false</RunSilent>
实际代码出现效果,可配置,可用容器显示滚动条效果以限制源代码所占篇幅(可惜高度不可以通过GUI方便的调节),格式正常,颜色漂亮,支持中文。感觉不错。有个缺点就是不是用容器的时候无法一次选择然后配置。
1:
2: // OpenGL需要的头文件
3: #include <GL/glew.h>
4: #include <GL/glut.h>
5:
6: //定义程序链接时所需要调用的OpenGL程序库,简化工程配置
7: #pragma comment( lib, "glu32.lib" )
8: #pragma comment( lib, "glut32.lib" )
9:
10: // DEFINES ////////////////////////////////////////////////
11:
12: // MACROS /////////////////////////////////////////////////
13:
14: #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
15: #define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
16:
17: // GLOBALS ////////////////////////////////////////////////
18: HWND ghWnd; // 窗口句柄
19: HINSTANCE ghInstance; // 程序实例句柄
20:
21: #define FRAME_PER_SECOND (30)
22: #define TIME_IN_FRAME (1000/FRAME_PER_SECOND)
23: #define CIRCLE_POINTS (100)
24: #define PI (3.1415926535898)
25:
26: // 取消 OpenGL ,在程序结束前调用,释放渲染环境,设备环境以及最终窗口句柄。
27: void DisableOpenGL()
28: {
29: wglMakeCurrent( NULL, NULL );
30: wglDeleteContext( ghRC );
31: ReleaseDC( ghWnd, ghDC );
32: }
33:
1: // OpenGL需要的头文件
2: #include <GL/glew.h>
3: #include <GL/glut.h>
4:
5: //定义程序链接时所需要调用的OpenGL程序库,简化工程配置
6: #pragma comment( lib, "glu32.lib" )
7: #pragma comment( lib, "glut32.lib" )
8:
9: // DEFINES ////////////////////////////////////////////////
10:
11: // MACROS /////////////////////////////////////////////////
12:
13: #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
14: #define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
15:
16: // GLOBALS ////////////////////////////////////////////////
17: HWND ghWnd; // 窗口句柄
18: HINSTANCE ghInstance; // 程序实例句柄
19:
20: #define FRAME_PER_SECOND (30)
21: #define TIME_IN_FRAME (1000/FRAME_PER_SECOND)
22: #define CIRCLE_POINTS (100)
23: #define PI (3.1415926535898)
24:
25: // 取消 OpenGL ,在程序结束前调用,释放渲染环境,设备环境以及最终窗口句柄。
26: void DisableOpenGL()
27: {
28: wglMakeCurrent( NULL, NULL );
29: wglDeleteContext( ghRC );
30: ReleaseDC( ghWnd, ghDC );
31: }
Paste As VS Code
界面如下,选项还算比较丰富,但是明显没有CodeSnippet好
代码效果还行,并且可以一次选中然后进一步配置,就是对中文支持有些问题,可惜了。还有标题栏可以选择显示,就是不能编辑,奇怪的设置。
- // OpenGL??的头文件
- #include <GL/glew.h>
- #include <GL/glut.h>
- //定义程序?接时所???用的OpenGL程序库,简化工程?置
- #pragma comment( lib, "glu32.lib" )
- #pragma comment( lib, "glut32.lib" )
- // DEFINES ////////////////////////////////////////////////
- // MACROS /////////////////////////////////////////////////
- #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
- #define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
- // GLOBALS ////////////////////////////////////////////////
- HWND ghWnd; // 窗口句柄
- HINSTANCE ghInstance; // 程序实例句柄
- #define FRAME_PER_SECOND (30)
- #define TIME_IN_FRAME (1000/FRAME_PER_SECOND)
- #define CIRCLE_POINTS (100)
- #define PI (3.1415926535898)
- // 取消 OpenGL ?在程序结束前?用??放渲染环境??备环境以及最终窗口句柄。
- void DisableOpenGL()
- {
- wglMakeCurrent( NULL, NULL );
- wglDeleteContext( ghRC );
- ReleaseDC( ghWnd, ghDC );
- }
界面,很大,感觉不错,虽然配置选项其实不多,也可选择box格式,不过效果一般。
全文格式效果一般,颜色明显没有Code Snippet丰富,而且代码行间距实在太大,还无法配置.
1:
2: // OpenGL需要的头文件
3: #include <GL/glew.h>
4: #include <GL/glut.h>
5:
6: //定义程序链接时所需要调用的OpenGL程序库,简化工程配置
7: #pragma comment( lib, "glu32.lib" )
8: #pragma comment( lib, "glut32.lib" )
9:
10: // DEFINES ////////////////////////////////////////////////
11:
12: // MACROS /////////////////////////////////////////////////
13:
14: #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
15: #define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
16:
17: // GLOBALS ////////////////////////////////////////////////
18: HWND ghWnd; // 窗口句柄
19: HINSTANCE ghInstance; // 程序实例句柄
20:
21: #define FRAME_PER_SECOND (30)
22: #define TIME_IN_FRAME (1000/FRAME_PER_SECOND)
23: #define CIRCLE_POINTS (100)
24: #define PI (3.1415926535898)
25:
26: // 取消 OpenGL ,在程序结束前调用,释放渲染环境,设备环境以及最终窗口句柄。
27: void DisableOpenGL()
28: {
29: wglMakeCurrent( NULL, NULL );
30: wglDeleteContext( ghRC );
31: ReleaseDC( ghWnd, ghDC );
32: }
33:
34:
似乎要和Windows的博客空间相匹配,而且配置界面感觉很简陋,在我的机器上以insert就崩溃
界面简陋
颜色还不错,但是不支持中文,一票否决.
// OpenGLÐèÒªµÄÍ·Îļþ #include <GL/glew.h> #include <GL/glut.h> //¶¨Òå³ÌÐòÁ´½ÓʱËùÐèÒªµ÷ÓõÄOpenGL³ÌÐò¿â,¼ò»¯¹¤³ÌÅäÖà #pragma comment( lib, "glu32.lib" ) #pragma comment( lib, "glut32.lib" ) // DEFINES //////////////////////////////////////////////// // MACROS ///////////////////////////////////////////////// #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0) #define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1) // GLOBALS //////////////////////////////////////////////// HWND ghWnd; // ´°¿Ú¾ä±ú HINSTANCE ghInstance; // ³ÌÐòʵÀý¾ä±ú #define FRAME_PER_SECOND (30) #define TIME_IN_FRAME (1000/FRAME_PER_SECOND) #define CIRCLE_POINTS (100) #define PI (3.1415926535898) // È¡Ïû OpenGL £¬ÔÚ³ÌÐò½áÊøÇ°µ÷Óã¬ÊÍ·ÅäÖȾ»·¾³£¬É豸»·¾³ÒÔ¼°×îÖÕ´°¿Ú¾ä±ú¡£ void DisableOpenGL() { wglMakeCurrent( NULL, NULL ); wglDeleteContext( ghRC ); ReleaseDC( ghWnd, ghDC ); }
还有一个syntax highter,需求真是大啊,软件如此多。可
名不符实,根本没有高亮,仅仅只有缩进。但是可以一次选中然后配置,这点比较好。支持中文。
// OpenGL需要的头文件 #include <GL/glew.h> #include <GL/glut.h> //定义程序链接时所需要调用的OpenGL程序库,简化工程配置 #pragma comment( lib, "glu32.lib" ) #pragma comment( lib, "glut32.lib" ) // DEFINES //////////////////////////////////////////////// // MACROS ///////////////////////////////////////////////// #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0) #define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1) // GLOBALS //////////////////////////////////////////////// HWND ghWnd; // 窗口句柄 HINSTANCE ghInstance; // 程序实例句柄 #define FRAME_PER_SECOND (30) #define TIME_IN_FRAME (1000/FRAME_PER_SECOND) #define CIRCLE_POINTS (100) #define PI (3.1415926535898) // 取消 OpenGL ,在程序结束前调用,释放渲染环境,设备环境以及最终窗口句柄。 void DisableOpenGL() { wglMakeCurrent( NULL, NULL ); wglDeleteContext( ghRC ); ReleaseDC( ghWnd, ghDC ); }
完美复制visual studio的代码,从其他地方拷贝过来的无效,无界面配置。用途单一。
// OpenGL需要的头文件 #include <GL/glew.h> #include <GL/glut.h> //定义程序链接时所需要调用的OpenGL程序库,简化工程配置 #pragma comment( lib, "glu32.lib" ) #pragma comment( lib, "glut32.lib" ) // DEFINES //////////////////////////////////////////////// // MACROS ///////////////////////////////////////////////// #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0) #define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1) // GLOBALS //////////////////////////////////////////////// HWND ghWnd; // 窗口句柄 HINSTANCE ghInstance; // 程序实例句柄 #define FRAME_PER_SECOND (30) #define TIME_IN_FRAME (1000/FRAME_PER_SECOND) #define CIRCLE_POINTS (100) #define PI (3.1415926535898) // 取消 OpenGL ,在程序结束前调用,释放渲染环境,设备环境以及最终窗口句柄。 void DisableOpenGL() { wglMakeCurrent( NULL, NULL ); wglDeleteContext( ghRC ); ReleaseDC( ghWnd, ghDC ); }
代码及语法高亮插件小结
没有感觉完美的插件,相对来说不支持中文的我们不考虑了,不支持C++的我不考虑了,最后结论是仅仅使用VS的人可以考虑Paste from Visual Studio,够用就行,不然CodeSnippet是最佳选择,比那么多的syntax highlighter都要好用,Source Code Formater可以作为第二选择,相对来说显示效果没有CodeSnippet好,配置选项没有那么丰富。
其他插件:
感觉不错,作用也很好,说是能很方便的查找添加MSDN的关键字链接,可是我连查wglMakeCurrent,wglDeleteContext,ReleaseDC都不存在,然后查了个简单的abs都查不到,有可能是网络问题,但是现在我网络状况很好,可惜了。
将控制台中复制的东西插入,因为我常用putty登录linux,然后展示命令行的东西,所以对我个人也很实用,也许一般人没有什么用吧。Windows的命令行甚至可以显示命令高亮-_-!功能强大,好用,虽然没有任何配置的办法。
Windows:
C:/>dir/w 驱动器 C 中的卷没有标签。 卷的序列号是 6854-7E94 C:/ 的目录 AnalysisLog.sr0 AUTOEXEC.BAT CONFIG.SYS [Documents and Settings] [Download] [Downloads] [ppt] [Program Files] [TDDOWNLOAD] [Temp] [WINDOWS] 3 个文件 419,464 字节 8 个目录 1,806,254,080 可用字节 C:/> |
Linux:
jtianling@jtianling-laptop:~$ ls -l | head -n 5 总用量 20772 -rwxrw-r-- 1 jtianling jtianling 1570 2008-10-26 16:59 1 -rwxrw-r-- 1 jtianling jtianling 11 2009-08-21 17:25 1.bat -rwxrw-r-- 1 jtianling jtianling 80 2008-11-12 23:45 allhead -rw-r--r-- 1 jtianling jtianling 0 2009-08-29 12:37 a.out jtianling@jtianling-laptop:~$ |
Rich Editor
有点像代码高亮的插件,但是仅支持C#和VB.net,还不支持中文,图都不想贴。
能将抓的图直接粘贴到WLW中,甚至不保存,节省大量时间,强烈推荐使用,首先要安装SnagIt。有一点问题就是配置太少无法抓WLW本身的图,医者不自医?-_-!
直接插入关键字在Wiki的链接,相对来说,由于Wiki的目录设置,其直接通过字符串生成了Wiki的链接,甚至没有查看一下链接是否存在,这点比较郁闷,但是总的来说还是值得一用。比如右边,C++,就是用此插件插入的,当肯定链接存在时不妨一用。
Word Count
原以为WLW中没有统计字数的功能,后来我发现本来就有,那还要这个干啥?还要求先选中全文-_-!无语了。
有点类似VA的Snippets功能,保存文本的模板,可惜的是不能将全部格式保留下来,所以将范围限制在了最最简单的文字,有点可惜。
总结
以上就是我使用过的插件,感觉Windows Live Writer本身可能不是太好用,但是没有关系,有了这些插件后,就好用多了,对于我来说,特别重要的是语法高亮的插件,这也算是开放的一个好处吧,希望微软多多开放,就像VS及WLW走的路一样。
本文因为操作Windows live Writer失误,被新的文章覆盖,通过Google cache奇迹般地找回,感谢Google-_-!
原创文章作者保留版权 转载请注明原作者 并给出链接
write by 九天雁翎(JTianLing) -- www.jtianling.com