自从 2015 年7月实习开始又重新把 Windows 作为了开发机,公司虽然已逐步向 Mac 迁移,但是新员工暂时还是领不到 Mac, #sigh 正式入职后用的电脑是 T440p, i7 的 CPU, 16 GB 内存,除了硬盘不是 SSD外性能还是挺好的。不喜欢用 Windows 很重要的一点就是 Linux 那一套命令行工具和服务用起来不爽。

下面主要从命令行工具、常用服务部署及 Windows 实用工具三方面进行介绍。

终端 - Babun(powerful Windows Shell) + tmux

鉴于 Windows 对命令行的支持实在是太差,尤其是没有一个好用的终端,因此出现了诸如 Cygwin, Xshell 和 PuTTY 等终端工具。这三者中 Cygwin 应该是最为重量级的一个,Xshell 和 PuTTY 作为 SSH 登陆看起来好像还是挺不错的,这两个我都没实际用过。看到公司有不少同事在用 PuTTY, 感觉其中最为致命的一点则是管理多个服务器时得开很多窗口,终端界面美观程度和自带功能暂且不谈,几个窗口切来切去真是令人眼花缭乱。

Cygwin 的优势是有一个好用的终端和众多软件包(Unix 下一系列命令行工具)。但比如盘符映射,apt-cyg 包管理工具安装等还需手动配置,安装过程往往也需要自己设定不少选项。直到某一天偶然发现了 Babun - a windows shell you will love!, 惊呼这货真是终端工作者的福音!这货基于 Cygwin, 默认已经配置好了 zsh, git, Vim 等常用工具,自带的包管理工具为 pact, 非常好用。卸载就是把一个隔离的 .babun 文件夹删掉,非常方便。

鉴于大陆的网络环境,建议将软件仓库地址改为163或者中科大的源,具体方法为用你最喜欢的文本编辑器打开 ~/.pact/pact.repo, 替换如下行为:

#PACT_REPO=http://mirrors.kernel.org/sourceware/cygwin/
PACT_REPO=http://mirrors.163.com/cygwin/

除此之外你还可以设置终端为半透明效果和代理等。另外为了更好地利用 babun 终端,你可能需要将其全屏,Full Screen - Alt + F11.

同时 SSH 管理多台服务器在开发工作中恐怕是再正常不过的事了。个人推荐 Cygwin + tmux 的组合,快捷键切换不同窗口,快速可控,配合 tmux 的配置文件还可使用更多功能。

需要注意的是如果在 babun 下启用 tmux 后若再登入本地 vagrant 虚机,babun 的窗口明显变卡。我的解决办法就是为 vagrant 虚机单独再开一窗口,可以在 vagrant 虚机里启用 tmux :)

Virtualbox + Vagrant - Development environments made easy

这货之前用 Docker 的时候听过,但那时还在主力用 Arch, 就没对 Vagrant 这种 VM 方案有多大兴趣。babun 结合 tmux 已经能应付大多数命令行工作了,但是有时候还是很需要原生的 Linux 环境进行测试和开发的,最近需要开发调试 Spark 相关项目时更是发现这货在 Windows 下的潜力,尤其是和 babun 这个 Shell 结合之后,威力大增!

还记得大学本科那会最开始接触的虚拟机技术是 VMware 的,后来才知道有开源的 Virtualbox 使用。之前想安装 Linux 虚机是先下一个安装镜像然后执行安装步骤,还得自己映射文件夹等其他步骤,总的来讲还是蛮麻烦的,直到暑假实习时才发现装好 Virtualbox 和 Vagrant 之后,一个 Vagrantfile 就可起一个 Linux box 了,再也不用手动安装系统这种无意义的活了,SSH 进去后结合 babun 就像回到了熟悉的 Linux, 世界因此又美好了一点。

Vagrantfile 及常用开发环境

Windows 下的 vagrant 虚机自己常用的服务有 docker/jdk/pyenv/zsh/git/vim… 基础镜像自然是应用非常广泛的 Ubuntu 14.04, Vagrantfile 及相应的开机安装脚本见 https://gist.github.com/billryan/dcd3092e87a9c38300e103cb344ed045 一个 vagrant up 即可将以上环境一键安装好。

P.S. 我的 tmux 配置文件见 dotfiles/tmux.conf

Windows 实用工具