(准确地说,这是个弹出式终端)
**前言**
先来了解一下什么是下拉式终端(drop down terminal),Mac OS X下的TotalTerminal,以及Linux下的Tilda。
如果你也跟我一样,认为命令行是图形界面无法替代的高效工具,同时,对Windows“弱爆了”的cmd.exe抱怨连连,那么这篇文章或许对你有用。
有人说,用Linux不就得了?可是有多少人的主要工作环境要依赖Windows下的各种软件,并且Linux的桌面其实也“弱爆了”,作为你的主要桌面也不会觉得好用的,双系统那更是切来切去的好折腾。那么,虚拟机装一个Linux?吃内存不说,文件交换好麻烦。
还有人建议用微软的PowerShell。它到底好不好用我没用过,不好说。可是你愿意学习两套互不兼容的命令行系统吗?那么无痛的解决方案来了,它就是Cygwin。
**安装Cygwin**
在Cygwin官方网站下载setup.exe,根据向导来安装即可。建议同时安装上这些软件包,默认可能是没有选中的:
procps vim wget svn mercurial gcc make perl python ruby openssh mintty

其中MinTTY是基于PuTTY修改的模拟终端,可以代替bash默认的终端,提供了一些Windows下使用的高级特性。并且它可以很好地支持中文。
安装好以后,建议让setup.exe创建一个开始菜单项。还建议把setup.exe也放到Cygwin的安装目录,以便以后使用,可以用它来添加新的软件包以及更新现有的软件包。
**配置**
从开始菜单中启动MinTTY,就可以看到bash的命令行了。如果你使用的是加入了域的电脑(例如企业环境),可能会遇到如下提示:
Your group is currently "mkpasswd". This indicates that
the /etc/passwd (and possibly /etc/group) files should be rebuilt.
See the man pages for mkpasswd and mkgroup then, for example, run
mkpasswd -l [-d] > /etc/passwd
mkgroup -l [-d] > /etc/group
Note that the -d switch is necessary for domain users.
按照这个提示说的方法来做是失败的。参考这里,得出这个方法:
mkpasswd -l -c > /etc/passwd; mkgroup -l -d > /etc/group
下面来安装一个类似apt-get的命令行包管理工具。它叫apt-cyg,安装方法和使用方法见这里。
你可以在MinTTY的标题栏打开Options窗口,进行一些个性化设置,比如改变字体。如果你使用的是中文版的Windows,我建议把MinTTY的locale设为en_US.UTF8,如下所示。(update 20111007: 如果你希望能够在MinTTY里正确显示Windows命令行工具的中文提示,请用en_US.GBK)

建议使用苹果的Monaco字体,在这里下载一个修改好的MinTTY可用的版本。
另外还建议把Looks-Transparency设为Med,这样终端就能半透明了。
接下来,还要对bash进行一些预设,编辑~/.bashrc文件,添加如下内容:
alias ls='ls --color=auto'
PS1="\[\e[32m\]\u:\[\e[33m\]\w\[\e[0m\]\$ "
LANG=en_US.UTF-8
第一行的是让ls命令默认显示彩色区分不同类型的项目,PS1设置是自定义bash提示行的内容,可以根据自己的喜好修改,参考这里。
另外,你还可以安装一个trash-cli,在命令行里实现回收站功能。
最终的效果如图:

**添加全局呼出终端热键**
拜AutoHotKey所赐,我能迅速开发出一个热键工具cyg-hotkey和MinTTY配合,实现类似于下拉式终端的效果。目前它的功能还很简单,并且不能自定义热键,但已经可用了。
请到cyg-hotkey的项目主页下载安装使用。
将cyg-hotkey.exe复制到Cygwin的安装目录,运行它。或者你也可以在开始菜单-启动里为它创建一个快捷方式,这样它可以随系统启动。

有这个图标表示cyg-hotkey正在后台运行,这时你可以按F7,呼出MinTTY窗口。
MinTTY窗口呼出以后,会保持总在最上,这符合所有下拉式终端的常规。如果你想隐藏它,再按一次F7即可。只需要简单地记住,需要命令行窗口的时候按F7即可,再按则隐藏。如果你使用Windows 7,我建议你把MinTTY锁定到任务栏。
你可以调整窗口的大小和位置,制造出类似于下拉式终端的效果。
如果你想更改快捷键,就要修改源代码了。很欢迎各位高手来完善它,为它添加各种实用的功能。欢迎联系我,或者在bitbucket的项目主页中follow我,并且贡献代码。