[{"data":1,"prerenderedAt":1010},["ShallowReactive",2],{"navigation":3,"posts-undefined-工具-0-999":20},[4,8,12,16],{"title":5,"path":6,"stem":7},"首页","\u002F","00.index",{"title":9,"path":10,"stem":11},"文章","\u002Fposts","01.posts",{"title":13,"path":14,"stem":15},"动态","\u002Fmoments","02.moments",{"title":17,"path":18,"stem":19},"关于","\u002Fabout","09.about",[21,251],{"id":22,"title":23,"body":24,"class":230,"cover":230,"coverSize":230,"date":231,"description":30,"draft":232,"extension":233,"hideComments":232,"location":234,"meta":235,"navigation":236,"path":237,"readingTime":238,"seo":243,"sitemap":244,"stem":245,"tags":246,"time":230,"weather":230,"__hash__":250},"posts\u002Fposts\u002F2015\u002F20150306.windows-close-monitor-tool.md","Windows 关屏小工具",{"type":25,"value":26,"toc":228},"minimark",[27,31,218,221,224],[28,29,30],"p",{},"有时候下班的时候不想关机，有很多原因，比如有 N 个网页 Tab 开着，有些可能还需要进一步查阅，关了的话从历史里不太好找，又或者，VS 开着调试，没做完，而第二天重新跑一下要很久。于是便有了挂机。可是公然挂机其实并不好，公司有规定下班自觉关机。按显示器按钮太 LOW，高端人士怎么能用这么粗鲁的方法呢！以前我用的是设置 Windows 关屏时间，5 分钟不动鼠标就关闭屏幕。这个坏处是不够及时。有什么办法能立马关闭屏幕呢？于是找到了如下代码：",[32,33,38],"pre",{"className":34,"code":35,"language":36,"meta":37,"style":37},"language-cpp shiki shiki-themes material-theme-lighter github-light github-dark","#pragma comment( linker, \"\u002Fsubsystem:\\\"windows\\\" \u002Fentry:\\\"mainCRTStartup\\\"\" )\n#include \u003Cwindows.h>\nint main()\n{\n    ::SendMessageA(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM)2);\n    ::Sleep(200);\n    LockWorkStation();\n    return 0;\n}\n","cpp","",[39,40,41,96,111,126,132,176,191,200,212],"code",{"__ignoreMap":37},[42,43,46,50,54,58,61,64,68,72,76,79,81,84,86,89,91,93],"span",{"class":44,"line":45},"line",1,[42,47,49],{"class":48},"sVHd0","#pragma",[42,51,53],{"class":52},"s9AJx"," comment",[42,55,57],{"class":56},"su5hD","( ",[42,59,60],{"class":52},"linker",[42,62,63],{"class":56},", ",[42,65,67],{"class":66},"sjJ54","\"",[42,69,71],{"class":70},"s_sjI","\u002Fsubsystem:",[42,73,75],{"class":74},"s_hVV","\\\"",[42,77,78],{"class":70},"windows",[42,80,75],{"class":74},[42,82,83],{"class":70}," \u002Fentry:",[42,85,75],{"class":74},[42,87,88],{"class":70},"mainCRTStartup",[42,90,75],{"class":74},[42,92,67],{"class":66},[42,94,95],{"class":56}," )\n",[42,97,99,102,105,108],{"class":44,"line":98},2,[42,100,101],{"class":48},"#include",[42,103,104],{"class":66}," \u003C",[42,106,107],{"class":70},"windows.h",[42,109,110],{"class":66},">\n",[42,112,114,118,122],{"class":44,"line":113},3,[42,115,117],{"class":116},"sbsja","int",[42,119,121],{"class":120},"sGLFI"," main",[42,123,125],{"class":124},"sP7_E","()\n",[42,127,129],{"class":44,"line":128},4,[42,130,131],{"class":124},"{\n",[42,133,135,138,141,144,147,150,153,155,158,160,163,166,169,173],{"class":44,"line":134},5,[42,136,137],{"class":56},"    ::",[42,139,140],{"class":120},"SendMessageA",[42,142,143],{"class":124},"(",[42,145,146],{"class":56},"HWND_BROADCAST",[42,148,149],{"class":124},",",[42,151,152],{"class":56}," WM_SYSCOMMAND",[42,154,149],{"class":124},[42,156,157],{"class":56}," SC_MONITORPOWER",[42,159,149],{"class":124},[42,161,162],{"class":124}," (",[42,164,165],{"class":56},"LPARAM",[42,167,168],{"class":124},")",[42,170,172],{"class":171},"srdBf","2",[42,174,175],{"class":124},");\n",[42,177,179,181,184,186,189],{"class":44,"line":178},6,[42,180,137],{"class":56},[42,182,183],{"class":120},"Sleep",[42,185,143],{"class":124},[42,187,188],{"class":171},"200",[42,190,175],{"class":124},[42,192,194,197],{"class":44,"line":193},7,[42,195,196],{"class":120},"    LockWorkStation",[42,198,199],{"class":124},"();\n",[42,201,203,206,209],{"class":44,"line":202},8,[42,204,205],{"class":48},"    return",[42,207,208],{"class":171}," 0",[42,210,211],{"class":124},";\n",[42,213,215],{"class":44,"line":214},9,[42,216,217],{"class":124},"}\n",[28,219,220],{},"建一个 C++控制台程序，插入上面的代码，搞定，双击一下自动关屏+锁屏！",[28,222,223],{},"Cool！",[225,226,227],"style",{},"html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .s9AJx, html code.shiki .s9AJx{--shiki-light:#9C3EDA;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sbsja, html code.shiki .sbsja{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sGLFI, html code.shiki .sGLFI{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":37,"searchDepth":98,"depth":98,"links":229},[],null,"2015-03-06",false,"md","Newegg",{},true,"\u002Fposts\u002F2015\u002Fwindows-close-monitor-tool",{"text":239,"minutes":240,"time":241,"words":242},"2 min read",1.16,69600,232,{"title":23,"description":30},{"loc":237},"posts\u002F2015\u002F20150306.windows-close-monitor-tool",[247,248,249],"技术","工具","Windows","dgiV6L1SMQcSMphs_oQmpDY3C1WffDqXgSpWGeaSKtw",{"id":252,"title":253,"body":254,"class":230,"cover":230,"coverSize":230,"date":994,"description":995,"draft":232,"extension":233,"hideComments":232,"location":230,"meta":996,"navigation":236,"path":997,"readingTime":998,"seo":1003,"sitemap":1004,"stem":1005,"tags":1006,"time":1008,"weather":230,"__hash__":1009},"posts\u002Fposts\u002F2013\u002F20130217.sublime-text-2-supergood-code-editor.md","Sublime Text 2 超级强大的代码编辑器，如获至宝！",{"type":25,"value":255,"toc":992},[256,266,269,272,278,281,286,291,294,298,302,306,311,314,318,325,328,331,336,339,342,364,368,373,381,385,388,393,396,400,403,406,411,414,418,423,426,441,444,447,703,707,716,720,723,727,730,734,742,747,750,754,757,762,769,778,782,785,792,795,802,805,809,816,819,826,829,833,840,843,850,853,857,864,867,874,877,884,887,890,897,900,907,910,917,920,923,930,933,936,943,946,953,956,959,966,969,972,975,978,983,989],[28,257,258,259,265],{},"好久没有写代码了，今天稍微温习了下 PHP，依旧是选择 CodeIgniter 的框架，今天看了一个 CodeIgniter 的教学视频：20 分钟创建一个小型博客 ",[260,261,262],"a",{"href":262,"rel":263},"http:\u002F\u002Fcodeigniter.org.cn\u002Ftutorials\u002Fwatch\u002Fblog",[264],"nofollow","，作者是 Derek Jones，虽然不知道他是谁，不过讲得还是不错的。但是，看了这个视频，我最大的收获是，竟然还有如此完美的代码编辑器，听了几遍都没有听出作者介绍的这个 IDE 叫什么，后来多方搜索，终于找到了这个 IDE 的名字 TextMate，很完美，但是只适用于 Mac 平台的，并没有 Windows 版的。",[28,267,268],{},"不过，所幸的是，我查到了另外一个 IDE，也就是今天的主角：Sublime Text 2，感觉比 TextMate 还要强大，而且是跨平台的。其界面之优美、功能之庞大让我爱不释手，更重要的是，它的速度特别快，就像 Notepad++一样，这也是我不喜欢 Eclipse 的原因，太臃肿。",[28,270,271],{},"下面我要引用一些网上的内容来介绍一下 Sublime Text 2：",[28,273,274],{},[275,276,277],"strong",{},"语法高亮、代码提示补全、代码折叠、自定义皮肤\u002F配色方案、多便签页：",[28,279,280],{},"SublimeText2 支持但不限于 C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL, Textile and XML 等主流编程语言的语法高亮。ST2 拥有优秀的代码自动完成功能（自动补齐括号，大括号等配对符号；自动补全已经出现的单词；自动补全函数名），非常智能；另外 ST2 也拥有代码片段（Snippet）的功能，可以将常用的代码片段保存起来，在需要时随时调用。当然，语法高亮、代码折叠、行号显示、自定义皮肤、配色方案等这些已经是一款现代编辑器应有的标配功能了，所以这里就不多做介绍了。",[282,283],"post-image",{"filename":284,"description":285},"01.png","实用方便的代码提示补全功能",[28,287,288],{},[275,289,290],{},"代码地图、多种界面布局与全屏免打扰模式：",[28,292,293],{},"Sublime Text 2 在界面上比较有特色的是支持多种布局和代码地图，也提供了 F11 和 Shift+F11 进入全屏免打扰模式，如下面几幅图：",[282,295],{"filename":296,"description":297},"02.png","代码地图与多标签页",[282,299],{"filename":300,"description":301},"03.png","多种布局设置，在大屏幕或需同时编辑多文件时尤为方便",[282,303],{"filename":304,"description":305},"04.png","全屏免打扰模式，更加专心于编辑",[28,307,308],{},[275,309,310],{},"完全开放的用户自定义配置与神奇实用的编辑状态恢复功能：",[28,312,313],{},"Sublime Text 2 的各种配置均由配置文件控制，完完全全的可以由用户自定义，如果你愿意折腾，甚至可以将它改得于原版完全不一样的操作体验。看下面的图，Setting – Default 菜单会打开默认的软件配置文件（这个文件会记录一些诸如使用什么字体等很多很多配置信息），Key Bindings – Default 是默认的快捷键配置文件，大家可以打开它们看看原本的一些设置是怎样配置的，但非常不建议直接在这里修改！你可以在 – User 结尾的文件（也就是用户自定义配置的意思）里面照样画葫芦那样来改，如果两边有相同的项目，它会以 – User 文件里面定义的为准。",[282,315],{"filename":316,"description":317},"05.png","Key Bindings",[28,319,320,321,324],{},"这个例子里我在 Key Bindings – User 里面的第一行：",[39,322,323],{},"{ \"keys\": [\"alt+up\"], \"command\": \"swap_line_up\" }",", 意思就是按 Alt+方向键上时将当前选择的那一行向上移（与上一行交换位置），如果语法神马的没问题，保存好这个文件之后马上就可以使用这个快捷键了。",[28,326,327],{},"Sublime Text 2 的快捷键还支持双重组合，譬如默认情况下，将选中的文字改成大写的热键是“Ctrl+K, Ctrl+U”，意思是当你先按下 Ctrl+K 之后迅速再按 Ctrl+U 进行触发（只按下 Ctrl+K 是没有作用的），这样可以避免很多热键冲突，也可以更灵活更多选择地进行热键自定义。不过在这里就不打算教大家怎样修改各种配置或修改热键了，这恐怕能出一个手册的，这里有一个套比较完整的官方文档(鸟语)，有兴趣的朋友可以去参考一下。",[28,329,330],{},"另外，SublimeText  还有一个值得一提的细节——”编辑状态恢复”，就是当你修改了一个文件，但没有保存，这时退出软件，ST2 是不会很烦人地提示你要不要保存的，因为无论是用户自发退出还是意外崩溃退出，下次启动软件后，你之前的编辑状态都会被完整恢复，就像你退出前一样。这个细节我认为非常非常的赞！因为我经常会尝试性地去修改一些地方，但在确保没有问题之前又不想保存，这时如果有些事情打断自己，需要离开时，这个特性就很有用了，直接退出就行，不用烦，下次回来打开软件继续编辑即可。当然，有了这个恢复特性再也不怕系统崩溃、断电了吧，真心让人觉得 ST2 特别特别的安全可靠，妥妥的啊！",[28,332,333],{},[275,334,335],{},"强大的多行选择和多行编辑：",[28,337,338],{},"在写代码的过程中，我们经常需要同时编辑多行代码或者多个变量。在 Sublime Text 2 中拥有非常实用的多行操作技巧，灵活运用可以大大提高编辑速度哟！相信日后你可能会这样问自己：“当年没有这种方式的编辑器时我究竟是怎么活过来的？！”",[28,340,341],{},"下面是一些我所了解的多行编辑方法：",[343,344,345,349,352,355,358,361],"ul",{},[346,347,348],"li",{},"鼠标选中多行，按下 Ctrl+Shift+L (Command+Shift+L) 即可同时编辑这些行；",[346,350,351],{},"鼠标选中文本，反复按 CTRL+D (Command+D) 即可继续向下同时选中下一个相同的文本进行同时编辑；",[346,353,354],{},"鼠标选中文本，按下 Alt+F3 (Win) 或 Ctrl+Command+G(Mac) 即可一次性选择全部的相同文本进行同时编辑；",[346,356,357],{},"Shift+鼠标右键 (Win) 或 Option+鼠标左键 (Mac) 或使用鼠标中键可以用鼠标进行竖向多行选择；",[346,359,360],{},"Ctrl+鼠标左键(Win) 或 Command+鼠标左键(Mac) 可以手动选择同时要编辑的多处文本",[346,362,363],{},"类似的技巧还有很多，求大家补充……",[282,365],{"filename":366,"description":367},"06.png","Shift+鼠标右键轻松实现多行编辑，批量给变量加前缀了",[28,369,370],{},[275,371,372],{},"雷电般快速的文件切换：",[28,374,375,376],{},"如果你同时打开了多个文件，或者你的项目里经常需要编辑不同的文件，在文件数量较多的时候，在过去往往需要花费很多的精力去寻找，很是烦人。而现在，Sublime Text 2 里只需按下 Ctrl+P(Win) 或 Shift+Command+P(Mac) 即可调出文件切换面板，接着你只需输入文件名，回车后即可瞬间切换过去！并且它支持模糊匹配，只需输入你记得的一部分即可，譬如我想要找一个“",[260,377,380],{"href":378,"rel":379},"http:\u002F\u002Fwww.iplaysoft.com.php%E2%80%9D%E7%9A%84%E6%96%87%E4%BB%B6%E6%9D%A5%E7%BC%96%E8%BE%91%EF%BC%8C%E9%82%A3%E4%B9%88%E4%BD%A0%E5%8F%AA%E9%9C%80%E8%A6%81%E8%BE%93%E5%85%A5%E2%80%9Cipl%E2%80%9D%E6%88%96%E8%80%85%E6%98%AF%E2%80%9Dips.c%E2%80%9D%E8%BF%99%E6%A0%B7%E7%9A%84%E5%AD%97%E7%AC%A6%E9%83%BD%E8%83%BD%E5%8C%B9%E9%85%8D%E5%87%BA%E6%9D%A5%EF%BC%8C%E8%BF%99%E4%B8%AA%E7%89%B9%E6%80%A7%E9%9D%9E%E5%B8%B8%E9%9D%9E%E5%B8%B8%E7%9A%84%E6%A3%92%EF%BC%81",[264],"www.iplaysoft.com.php”的文件来编辑，那么你只需要输入“ipl”或者是”ips.c”这样的字符都能匹配出来，这个特性非常非常的棒！",[282,382],{"filename":383,"description":384},"07.png","图中 ca 匹配了 capabilities.php 和 classese.php，选择就能快速切换",[28,386,387],{},"类似的功能，我只在类似 Eclipse 等大型(笨重)的 IDE 中才见到过，然而小巧快速的编辑器中，我还是首次遇到。使用这个功能，你除了可以在已打开的文件中切换之外，如果你使用项目管理（将一个文件夹设置成一个项目），它还能懂得去搜索匹配项目文件夹下未被打开过的文件。现在你还需要用鼠标去一个一个点标签页来切换吗？你还要打开“我的电脑”慢慢在各个不同文件夹去找需要编辑的文件吗？使用 ST2，你只需输入几个字符即可～只有一句话：前所未有的方便！",[28,389,390],{},[275,391,392],{},"随心所欲的跳转：快速罗列与定位函数\u002FHTML 的元素、跳转到指定行：",[28,394,395],{},"使用上面介绍的快速文件切换功能，可以很轻易地打开\u002F切换到自己想要编辑的文档了，但如果这个文件的代码很长很长，想要轻松跳到要编辑的地方又有什么好方法呢？ Sublime Text 2 早就帮你想好了，同样是按下前面所说的 Ctrl+P(Win) 或 Shift+Command+P(Mac)，这次试试先输入一个 @ 号看看？嗯，好样的！这列表马上帮你罗列出这文件里全部的 Function 了！同样使用模糊匹配，快速输入几个关键字，马上就能定位到那个 Function 去了！！！在需要不停在多个 Function 之间跳转的时候这个功能尤显实用～妈妈再也不用担心我找函数找到蛋疼了！当你编辑的是 HTML 时，这货给你罗列的则是 HTML 的各个 ID 元素，相信搞前端的同学们都鸡冻了吧。",[282,397],{"filename":398,"description":399},"08.png","Ctrl+P之后输入@号或者 直接按Ctrl+R，即可列出该文件里的全部function",[28,401,402],{},"输入@号开始有此般神奇功效，那么再试试输入一个英文冒号 : 开始吧，然后再输入一个数字，嗯，这次则可以跳到指定的行数了；输入一个#号开始，可以罗列\u002F搜索文本；而且你还可以使用更快速的快捷键，譬如快速列出\u002F跳转函数就是 Ctrl+R (Mac 下是 Command+R)，它完全等同于 Ctrl+P 之后输入@；跳转到指定行号是 Ctrl+G (Mac 是 Command+G)。",[28,404,405],{},"而且更让人叫绝的是，这些切换定位方法你还可以配合在一起使用！譬如我有一个名为”hello-iplaysoft.js”的文件，里面其中有一个 function 叫做”visit_iplaysoft_com”，我现在想要编辑这个函数，那么我只需按下 Ctrl+P，然后输入“heip@vi”回车（模糊匹配，注意前面有颜色的字符），ST2 马上就给我到打开这个文件并定位进去了！够方便了吧？！熟记这几个快捷键，你可以很一气呵成地进行文件切换和编辑，你会发现世界更美好哦亲……",[28,407,408],{},[275,409,410],{},"集所有功能于一身的命令面板：",[28,412,413],{},"Sublime Text 2 的一大特色是拥有一个相当强大的命令面板，它几乎无所不能！任何时候，按下 Ctrl+Shift+P(Win) 或 Command+Shift+P(Mac) 即可调出。利用它，你可以实现很多很多很多很多很多功能，例如“Set Syntax:PHP”即可将当前文档设置成 PHP 语法高亮；“Convert Case: Swap Case”可以将选中的文本大小写反转；“File: Save All”可以一次保存全部文件；“File: Close All”一次关闭全部文件等等……而且，这里的列表一样支持模糊匹配（这货真心是个好东西啊！）。因为这里面命令实在太多了，覆盖的作用范围也很广，我这里实在不能一一介绍，大家如果有兴趣，可以经常调个面板出来看看列表中都有些什么命令，多多去了解、尝试、再慢慢消化，相信它会让你再也离不开它。",[282,415],{"filename":416,"description":417},"09.png","强大的命令面板，可以在这里调用一切SublimeText提供的功能",[28,419,420],{},[275,421,422],{},"Package Control（绝不可错过的扩展包管理器）：",[28,424,425],{},"Sublime Text 2 除了自身拥有无数实用功能和特性之外，它还能安装使用各种扩展\u002F皮肤\u002F配色方案等来增强自己。现在介绍的这个 Package Control 可以看做是一个 ST2 的扩展管理器，使用它，你可以用非常神奇、非常简单方便的方法去下载、安装、删除 Sublime Text 2 的各种插件、皮肤等，相信我，想更好地使用 ST2 绝对不能没有它！不过 ST2 本身并没有自带这个工具，我们需要自行安装它，方法很简单：",[427,428,429,432,435,438],"ol",{},[346,430,431],{},"在 SublimeText2 的目录里面找到 Data > Installed Packages 的文件夹 (如没有请手动新建)",[346,433,434],{},"在这里下载 Package Control.sublime-package 文件",[346,436,437],{},"将下载到的文件放进去 Installed Packages 里面",[346,439,440],{},"重新启动 Sublime Text 即可",[28,442,443],{},"如果 Package Control 已经安装成功，那么 Ctrl+Shift+P 调用命令面板，我们就会找到一些以“Package Control:”开头的命令，我们常用到的就是几个 Install Package (安装扩展)、List Packages (列出全部扩展)、Remove Package (移除扩展)、Upgrade Package (升级扩展)。",[28,445,446],{},"但如果你按照上面的方法确实搞不定，可以试试按键盘 Ctrl+~ （数字 1 左边的按键）调出控制台，然后拷贝下面的代码进去并回车，它会自动帮你新建文件夹并下载文件的，与上面的方法最终效果是一样的：",[32,448,452],{"className":449,"code":450,"language":451,"meta":37,"style":37},"language-python shiki shiki-themes material-theme-lighter github-light github-dark","import urllib2,os;\npf='Package Control.sublime-package';\nipp=sublime.installed_packages_path();\nos.makedirs(ipp) if not os.path.exists(ipp) else None;\nurllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler()));\nopen(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http:\u002F\u002Fsublime.wbond.net\u002F'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation'\n","python",[39,453,454,467,487,509,560,593],{"__ignoreMap":37},[42,455,456,459,462,464],{"class":44,"line":45},[42,457,458],{"class":48},"import",[42,460,461],{"class":56}," urllib2",[42,463,149],{"class":124},[42,465,466],{"class":56},"os;\n",[42,468,469,472,476,479,482,484],{"class":44,"line":98},[42,470,471],{"class":56},"pf",[42,473,475],{"class":474},"smGrS","=",[42,477,478],{"class":66},"'",[42,480,481],{"class":70},"Package Control.sublime-package",[42,483,478],{"class":66},[42,485,211],{"class":486},"srjyR",[42,488,489,492,494,497,500,504,507],{"class":44,"line":113},[42,490,491],{"class":56},"ipp",[42,493,475],{"class":474},[42,495,496],{"class":56},"sublime",[42,498,499],{"class":124},".",[42,501,503],{"class":502},"slqww","installed_packages_path",[42,505,506],{"class":124},"()",[42,508,211],{"class":486},[42,510,511,514,516,519,521,523,525,528,531,534,536,540,542,545,547,549,551,554,558],{"class":44,"line":128},[42,512,513],{"class":56},"os",[42,515,499],{"class":124},[42,517,518],{"class":502},"makedirs",[42,520,143],{"class":124},[42,522,491],{"class":502},[42,524,168],{"class":124},[42,526,527],{"class":48}," if",[42,529,530],{"class":474}," not",[42,532,533],{"class":56}," os",[42,535,499],{"class":124},[42,537,539],{"class":538},"skxfh","path",[42,541,499],{"class":124},[42,543,544],{"class":502},"exists",[42,546,143],{"class":124},[42,548,491],{"class":502},[42,550,168],{"class":124},[42,552,553],{"class":48}," else",[42,555,557],{"class":556},"s39Yj"," None",[42,559,211],{"class":486},[42,561,562,565,567,570,572,574,576,579,581,583,585,588,591],{"class":44,"line":134},[42,563,564],{"class":56},"urllib2",[42,566,499],{"class":124},[42,568,569],{"class":502},"install_opener",[42,571,143],{"class":124},[42,573,564],{"class":502},[42,575,499],{"class":124},[42,577,578],{"class":502},"build_opener",[42,580,143],{"class":124},[42,582,564],{"class":502},[42,584,499],{"class":124},[42,586,587],{"class":502},"ProxyHandler",[42,589,590],{"class":124},"()))",[42,592,211],{"class":486},[42,594,595,599,601,603,605,607,609,612,614,616,618,620,623,625,628,630,633,636,638,640,642,645,647,649,652,654,657,659,661,664,666,668,671,673,675,678,680,683,686,689,692,695,697,700],{"class":44,"line":178},[42,596,598],{"class":597},"sptTA","open",[42,600,143],{"class":124},[42,602,513],{"class":502},[42,604,499],{"class":124},[42,606,539],{"class":538},[42,608,499],{"class":124},[42,610,611],{"class":502},"join",[42,613,143],{"class":124},[42,615,491],{"class":502},[42,617,149],{"class":124},[42,619,471],{"class":502},[42,621,622],{"class":124},"),",[42,624,478],{"class":66},[42,626,627],{"class":70},"wb",[42,629,478],{"class":66},[42,631,632],{"class":124},").",[42,634,635],{"class":502},"write",[42,637,143],{"class":124},[42,639,564],{"class":502},[42,641,499],{"class":124},[42,643,644],{"class":502},"urlopen",[42,646,143],{"class":124},[42,648,478],{"class":66},[42,650,651],{"class":70},"http:\u002F\u002Fsublime.wbond.net\u002F",[42,653,478],{"class":66},[42,655,656],{"class":474},"+",[42,658,471],{"class":502},[42,660,499],{"class":124},[42,662,663],{"class":502},"replace",[42,665,143],{"class":124},[42,667,478],{"class":66},[42,669,670],{"class":66}," '",[42,672,149],{"class":124},[42,674,478],{"class":66},[42,676,677],{"class":70},"%20",[42,679,478],{"class":66},[42,681,682],{"class":124},")).",[42,684,685],{"class":502},"read",[42,687,688],{"class":124},"())",[42,690,691],{"class":56},"; ",[42,693,694],{"class":597},"print",[42,696,670],{"class":66},[42,698,699],{"class":70},"Please restart Sublime Text to finish installation",[42,701,702],{"class":66},"'\n",[282,704],{"filename":705,"description":706},"10.png","成功安装 Package Control 之后，在命令面板里会出现以其命名开头的一系列命令",[28,708,709,710,715],{},"在命令面板输入 “Package Control: Install Package“即会列出全部可以安装的扩展（必需连接网络，如下图），从列表可以看到，4GL、AAAPackageDev 那些就是插件的名称，选择它们就可以进行下载安装了。从该列表可以看到，目前 ST2 的各种扩展已经非常丰富了！此外，你还可以在",[260,711,714],{"href":712,"rel":713},"http:\u002F\u002Fwbond.net\u002Fsublime_packages\u002Fcommunity",[264],"这里","看到 Web 版的扩展列表和详细的说明 （这俩列表的数据应该是同步的。在截稿为止 2012-7-8，这里已经收集了 482 个扩展包了）",[282,717],{"filename":718,"description":719},"11.png","plugins",[28,721,722],{},"我这里以安装“JsFormat”插件为例，简单介绍一下 SublimeText 里面怎样安装与使用插件吧。JsFormat 的功能就是可以将一些凌乱的 JavaScript 代码重新排版，以方便更好地阅读与编辑。使用 Ctrl+Shift+P 调用命令面板，输入“Package Control: Install Package”(安装扩展包)，在插件列表中选择安装“JsFormat”(可以输入字符过滤)，待提示成功之后即已完成安装。随便打开一个 js 文件（最好是换行、对齐特别凌乱的那种），按下 Ctrl+Shift+P 调用命令面板，你会发现已经多了一项命令叫做“Format: Javascript”，如图：",[282,724],{"filename":725,"description":726},"12.png","使用 JSFormat 插件的 Format: Javascript 命令",[28,728,729],{},"使用之后，你的代码瞬间就变整齐了有木有！你也可以使用这个插件的热键“CTRL+ALT+F”进行整理（命令面板右方可以看到）。",[282,731],{"filename":732,"description":733},"13.png","使用 JSFormat 之后的 JS 代码效果，注意上图的JS代码是一堆的",[28,735,736,737,741],{},"当然，不同的扩展，使用的方法与表现的形式都不一样，这个就只能去 web 版查一下这个插件的一些具体的使用说明了，这里是不能一概而论的。不过大体上，安装和使用插件就是这么的简单。通过各种插件，你几乎可以实现任何你想要的功能。而且 ST2 也开放了插件 API，如果你有能力，也可以试试开发一个，可以参考",[260,738,714],{"href":739,"rel":740},"http:\u002F\u002Fwww.sublimetext.com\u002Fdocs\u002F2\u002Fapi_reference.html",[264],"的 API 文档。本文后面会推荐一些实用的插件。",[28,743,744],{},[275,745,746],{},"更换主题或配色方案：",[28,748,749],{},"如果你看腻了 SublimeText 的原版皮肤，也可以折腾一下换肤的。譬如下图是一款比较流行的主题 Theme – Soda，和安装插件基本上一样，使用 Package Control 进入 Install Package 的列表里面找到它进行安装即可。你也可以在网上找到一些 ST2 的主题，下载回来放到安装目录的 Data\\Packages 文件夹里面，然后选择切换主题。配色方案的操作也是类似，大家自己研究研究吧，这里不多做介绍了。",[282,751],{"filename":752,"description":753},"14.png","theme-soda-light",[28,755,756],{},"另外，SublimeText 还有很给力的一点，就是它能原生支持 TextMate 的 Bundle 和配色方案，同样也是放在 Packages 文件夹里即可使用。TextMate 的 Bundle 和配色方案资源都比较丰富，网上可以找到不少。",[28,758,759],{},[275,760,761],{},"下面来介绍几款有用的 Sublime Text 2 的插件：",[28,763,764],{},[260,765,768],{"href":766,"rel":767},"https:\u002F\u002Fbitbucket.org\u002Fsublimator\u002Fsublime-2-zencoding",[264],"Zen Coding",[28,770,771,772,777],{},"这个，不解释了，还不知道 ZenCoding 的同学强烈推荐去看一下：《",[260,773,776],{"href":774,"rel":775},"http:\u002F\u002Fwww.qianduan.net\u002Fzen-coding-a-new-way-to-write-html-code.html",[264],"Zen Coding: 一种快速编写 HTML\u002FCSS 代码的方法","》。",[282,779],{"filename":780,"description":781},"15.png","zen",[28,783,784],{},"PS:Zen Coding  for Sublime  Text 2 插件的开发者已经停止了在 Github 上共享了，现在只有通过 Package Control 来安装。",[28,786,787],{},[260,788,791],{"href":789,"rel":790},"https:\u002F\u002Fgithub.com\u002Fmrmartineau\u002FJquery",[264],"jQuery Package for sublime Text",[28,793,794],{},"如果你离不开 jQuery 的话，这个必备～～",[28,796,797],{},[260,798,801],{"href":799,"rel":800},"https:\u002F\u002Fgithub.com\u002Fwbond\u002Fsublime_prefixr",[264],"Sublime Prefixr",[28,803,804],{},"Prefixr，CSS3 私有前缀自动补全插件，显然也很有用哇",[282,806],{"filename":807,"description":808},"16.png","Prefixr",[28,810,811],{},[260,812,815],{"href":813,"rel":814},"https:\u002F\u002Fgithub.com\u002Fjdc0589\u002FJsFormat",[264],"JS Format",[28,817,818],{},"一个 JS 代码格式化插件。",[28,820,821],{},[260,822,825],{"href":823,"rel":824},"https:\u002F\u002Fgithub.com\u002Fkronuz\u002FSublimeLinter\u002F",[264],"SublimeLinter",[28,827,828],{},"一个支持 lint 语法的插件，可以高亮 linter 认为有错误的代码行，也支持高亮一些特别的注释，比如“TODO”，这样就可以被快速定位。（IntelliJ IDEA 的 TODO 功能很赞，这个插件虽然比不上，但是也够用了吧）",[282,830],{"filename":831,"description":832},"17.png","Linter",[28,834,835],{},[260,836,839],{"href":837,"rel":838},"https:\u002F\u002Fgithub.com\u002Fmrmartineau\u002FPlaceholders",[264],"Placeholders",[28,841,842],{},"故名思意，占位用，包括一些占位文字和 HTML 代码片段，实用。",[28,844,845],{},[260,846,849],{"href":847,"rel":848},"https:\u002F\u002Fgithub.com\u002Fwbond\u002Fsublime_alignment",[264],"Sublime Alignment",[28,851,852],{},"用于代码格式的自动对齐。传说最新版 Sublime 已经集成。",[282,854],{"filename":855,"description":856},"18.png","Alignment",[28,858,859],{},[260,860,863],{"href":861,"rel":862},"https:\u002F\u002Fgithub.com\u002Fkemayo\u002Fsublime-text-2-clipboard-history",[264],"Clipboard History",[28,865,866],{},"粘贴板历史记录，方便使用复制\u002F剪切的内容。",[28,868,869],{},[260,870,873],{"href":871,"rel":872},"https:\u002F\u002Fgithub.com\u002Fphillipkoebbe\u002FDetectSyntax",[264],"DetectSyntax",[28,875,876],{},"这是一个代码检测插件。",[28,878,879],{},[260,880,883],{"href":881,"rel":882},"https:\u002F\u002Fgithub.com\u002Fweslly\u002FNettuts-Fetch",[264],"Nettuts Fetch",[28,885,886],{},"如果你在用一些公用的或者开源的框架，比如 Normalize.css 或者 modernizr.js，但是，过了一段时间后，可能该开源库已经更新了，而你没有发现，这个时候可能已经不太适合你的项目了，那么你就要重新折腾一遍或者继续用陈旧的文件。Nettuts Fetch 可以让你设置一些需要同步的文件列表，然后保存更新。",[282,888],{"filename":889},"19.jpg",[28,891,892],{},[260,893,896],{"href":894,"rel":895},"https:\u002F\u002Fgithub.com\u002Fcgutierrez\u002FJsMinifier",[264],"JsMinifier",[28,898,899],{},"该插件基于 Google Closure compiler，自动压缩 js 文件。",[28,901,902],{},[260,903,906],{"href":904,"rel":905},"https:\u002F\u002Fgithub.com\u002FKronuz\u002FSublimeCodeIntel",[264],"Sublime CodeIntel",[28,908,909],{},"代码自动提示",[28,911,912],{},[260,913,916],{"href":914,"rel":915},"https:\u002F\u002Fgithub.com\u002Ffacelessuser\u002FBracketHighlighter",[264],"Bracket Highlighter",[28,918,919],{},"类似于代码匹配，可以匹配括号，引号等符号内的范围。",[282,921],{"filename":922},"20.png",[28,924,925],{},[260,926,929],{"href":927,"rel":928},"https:\u002F\u002Fgithub.com\u002Fatadams\u002FHex-to-HSL-Color",[264],"Hex to HSL",[28,931,932],{},"自动转换颜色值，从 16 进制到 HSL 格式，快捷键 Ctrl+Shift+U",[282,934],{"filename":935},"21.png",[28,937,938],{},[260,939,942],{"href":940,"rel":941},"http:\u002F\u002Fwww.sublimetext.com\u002Fforum\u002Fviewtopic.php?f=5&p=22274",[264],"GBK to UTF8",[28,944,945],{},"将文件编码从 GBK 转黄成 UTF8，快捷键 Ctrl+Shift+C",[28,947,948],{},[260,949,952],{"href":950,"rel":951},"https:\u002F\u002Fgithub.com\u002Fkemayo\u002Fsublime-text-2-git",[264],"Git",[282,954],{"filename":955},"22.png",[28,957,958],{},"该插件基本上实现了 git 的所有功能。",[28,960,961],{},[260,962,965],{"href":963,"rel":964},"http:\u002F\u002Fwbond.net\u002Fsublime_packages\u002Fsftp",[264],"SFTP",[28,967,968],{},"超级强大的 FTP 插件。安装方法：",[28,970,971],{},"按下 Ctrl+Shift+P 调出命令面板，输入 install 调出 Install Package 选项并回车，然后输入 ftp，下拉列表中会出现一些相关的插件，选中 sftp 进行安装就行了，装好后还需进行配置，选择菜单栏中的 File->SFTP\u002FFTP->Set up Server，然后会出现一个配置窗口，将相关内容修改成你的配置，最后保存成任意文件名即可，下面给出我的一个 ftp 配置文件：",[282,973],{"filename":974},"23.png",[28,976,977],{},"另外，在左侧栏本地项目上右击，有个 SFTP\u002FFTP，选择 Add Remote Mapping，然后会生成一个 sftp-config.json 的文件，之后你就可以通过项目的 SFTP\u002FFTP 菜单里的 Sync Local -> Remote 来进行文件的同步了，很是方便！",[28,979,980],{},[275,981,982],{},"附上一段 Sublime Text 2 的介绍视频（作者：大城小胖）：",[28,984,985],{},[260,986,987],{"href":987,"rel":988},"http:\u002F\u002Fv.youku.com\u002Fv_show\u002Fid_XMzU5NzQ5ODgw.html",[264],[225,990,991],{},"html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .srjyR, html code.shiki .srjyR{--shiki-light:#90A4AE;--shiki-light-font-style:inherit;--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .slqww, html code.shiki .slqww{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s39Yj, html code.shiki .s39Yj{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":37,"searchDepth":98,"depth":98,"links":993},[],"2013-02-17","好久没有写代码了，今天稍微温习了下 PHP，依旧是选择 CodeIgniter 的框架，今天看了一个 CodeIgniter 的教学视频：20 分钟创建一个小型博客 http:\u002F\u002Fcodeigniter.org.cn\u002Ftutorials\u002Fwatch\u002Fblog，作者是 Derek Jones，虽然不知道他是谁，不过讲得还是不错的。但是，看了这个视频，我最大的收获是，竟然还有如此完美的代码编辑器，听了几遍都没有听出作者介绍的这个 IDE 叫什么，后来多方搜索，终于找到了这个 IDE 的名字 TextMate，很完美，但是只适用于 Mac 平台的，并没有 Windows 版的。",{},"\u002Fposts\u002F2013\u002Fsublime-text-2-supergood-code-editor",{"text":999,"minutes":1000,"time":1001,"words":1002},"23 min read",22.805,1368300,4561,{"title":253,"description":995},{"loc":997},"posts\u002F2013\u002F20130217.sublime-text-2-supergood-code-editor",[248,1007],"转载","凌晨","wPJozhFrPf8JnG9YTJsRn0LiuJtXuU3PzoNcgW0ZtE4",1777579135771]