I code it

Code and Life

我常用的一些提高开发效率的小工具

前言

日常开发中,除了基本的编辑器,调试器外,我们还会有各种各样的计算机操作,比如查找一个路径很深的文件,快速启动shell,记录一些网页上看到的优秀代码片段/文字等等。在摸索了很长时间之后,相信每个开发人员都有属于自己的一套工具集了,反正我自己已经搜集了一套可以很大程度提高开发效率的小软件。所谓小,只是说这些软件的体积较为小巧,但是功能方面却极为强大,下面是一个列表,列表之后是各个软件的详细介绍。当然,每个工具可能都有其更复杂的配置及使用方法,也不可能在一篇文章中完全覆盖,列位可以自行google。

  1. Google拼音(输入法)
  2. ClipX(系统剪贴板扩展)
  3. Launchy(快速启动)
  4. Everything Search(搜索)
  5. Evernote(笔记记录)
  6. Vim(编辑器)
  7. Unxutils(unix下的常用工具的移植版)

这里列出的软件基本具备以下特性:

  1. 体积小巧,运行速度快
  2. 免费/免费+开源
  3. 专注且功能强大
  4. 运行在windows平台上(Linux本身已经提供了足够多的好工具)

一 Google拼音

每当你需要输入点什么的时候,一个好的输入法总是可以让你事半功倍。智能联想,输入记忆等常规功能就不做讨论了,这些功能其他输入法也会提供。Google拼音提供更多的高级更能,如用户词典同步,网络词典同步,U模式输入,可扩展性(这个对于hacker型技术人员,简直太贴心了,这才是我推荐她的原因)等。

U模式

当遇到一个生僻字,又不知道其读音的话,可以使用U模式很容易的拼出来, 比如效率的“效”字,由“交”+“文”组成,则可以用“ujiaowen”来查找出其读音:

uxiao

可扩展性(I模式)

一个良好的软件,可扩展性是必须提供的,Google使用lua作为脚本,并提供一些公开的API,这样你就可以很轻易的定义自己的缩写补全功能。比如我想要在输入mz(名字)的时候,输入法返回我的名字;而输入qm(签名)的时候,输入法返回名字+当前日期。可以定义一个脚本:

   1: function FullName()
   2:     return "邱俊涛"
   3: end
   4:  
   5: function GetDate()
   6:     return os.date("%Y-%m-%d")
   7: end
   8:  
   9: function Sign()
  10:     return "作者:" .. FullName() .. ",时间:" .. GetDate()
  11: end
  12:  
  13: ime.register_command("mz", "FullName", "姓名")
  14: ime.register_command("qm", "Sign", "签名")

其中,ime.register_command为Google拼音提供的API,用以将命令与需要调用的函数绑定并注册到Google输入法引擎。输入时,先输入“i”进入命令模式,然后输入注册的命令名“mz”:

imz

或者

iqm

即可。如果你经常需要输入某段重复的文字,建议使用自定义的脚本来完成。关于Google拼音的完整功能列表,请参考这里,API手册,请参考这里

二 ClipX

系统自带的剪贴板只有一个,很容易被覆盖,当你编辑一个文件的时候,想要将文件中的几个片段同时拷贝到另一个文件中(这个场景在编程的时候会很常见),如果有多个剪贴板,那该多好啊。ClipX就是多重剪贴板中比较优秀的一个,ClipX会将你每次的CTRL-C的内容拷贝到一个缓冲中,以备使用。按Win-Insert将剪贴板列表列出,然后选择一个数字即可,ClipX支持预览功能,即,如果你的剪贴板中是图片的话,可以从缩略图中看到其内容:

clipx-doc

ClipX无疑非常强大,再也不需要担心内容覆盖的问题了。唯一可能的问题是,不要向Linux用户推荐这个小工具,否则很容易被鄙视,因为vim/emacs中都早在几十年前就具备了多重剪贴板的功能。

三 Launchy

Launchy是一个用于快速启动系统中已安装工具的工具,比如,想要启动MS Office Word,可以用Launchy的快捷键(可以修改,我的机器上是ALT-ESC)将Launchy的查询窗口置于前台:

launchy-word

输入word,可以看到一个匹配word的应用程序列表,回车即可打开该应用程序,使用Launchy,你的手可以不离开键盘就完成所有的操作,这将大大提高效率,特别是你有多个应用程序需要启动的时候(珍惜生命,远离鼠标)。

四 Everything Search

Everything是一个高速的文件搜索工具,现实世界中,经常会发生:保存了一个文件到一个很深的路径,而第二天要查看该文件的时候,忘记它的路径了,或者一个同事问你有没有apache的源码包,你不记得放在何处了。Everything可以飞速的将硬盘扫描并做索引,速度快到了你几乎觉察不到。而且Everything支持正则表达式,甚至内部还嵌如了一个HTTP服务器和一个FTP服务器。

everything-linux

五 Evernote

事实上,Evernote是不应该出现在这个列表的,它的新版本体积太庞大了。但是考虑再三,我还是把它列进来了,因为其功能和在实际中发挥的作用非常强大。我相信每个高效的程序员都有各种形式的知识管理工具,纸笔也是一个不错的方式,但是不容易检索。Evernote支持将网页中的内容剪下来保存到笔记本中,支持多个机器间的同步,分享,导入/导出等。而其搜索功能则强大到令人发指,它可以直接搜索出图片上的文字信息。当然,最重要的是,它是免费的(可以升级到专业版),虽然免费版本有月空间限制,但是事实上很难用完。

evernote-juntao

搜索字符串”IDLE”,可以看到,截图中的图片中的“IDLE”已经高亮了:

image

六 (g)Vim

Vim的简介就免了,这里约略提一下vim与外部程序的集成,如在vim中编写python脚本片段,并快速执行该片段;或者编写dot片段,并使用graphviz将其绘制出来等。

主要涉及vim的autocmd命令:

   1: autocmd [group] {event} {pattern} [nested] {cmd}

简而言之,autocmd完成以下动作:当发生event时,对匹配pattern的模式执行cmd命令。比如,当装载文件/保存文件的动作时,如果文件的扩展名为“.py”,则如果按F5的话,就用python解释器解释之。

   1: autocmd BufRead *.py nmap <F5> :w<CR>:!python %<CR><CR>

将此命令保存到vim的启动配置(.vimrc)中,就可以轻松编写python脚本了,如果想要对“.dot”文件,在按F8时调用graphgiz的dot命令,并在新窗口打开最终结果,则命令对应如下:

   1: autocmd BufRead *.dot nmap <F8> :w<CR>:!dot -Tpng -o %<.png % && start %<.png<CR><CR>


vim-message-bus

七 Unxutils

Unxutils是常用的GNU工具集的windows移植版本,对于熟悉Linux/Unix命令行操作的开发人员,使用它可以将windows自带的命令行扩展的十分易用,只需要设置好环境变量即可。简单的如grep/cat/ls等命令,复杂的如sed/awk等流编辑器,都可以使用Unxutils来使用,在linux下的经验也完整的得以延续。

unxutil

当然,还有面向开发的Mingw和整个Unix的windows克隆版本Cygwin等,也都值得一试。

这里列出的只是我使用最频繁的几个小工具,同时建议列位也应该进行尝试。根据我的经验,它们确实可以在很大程度上提升使用计算机的效率。当然,如果你有更趁手,更高效的工具,请通知我,请保持你工具集的更新。

Comments