My Development Setup On Windows
For some time I was planning to describe my work/development environment on Windows (where the default setup, frankly, is not sane for software development work). Hopefully someone will find this useful to improve their workflow.
AutoHotkey
AutoHotkey helps to keep my fingers on the keyboard and to grab the mouse at least a bit less often. The Alt-Tab shortcut on Windows is good, so long as you have no more than two applications to switch between. For a workflow where you have a browser, editor, sql client and shell window, the Alt-Tab switching is waaaay too cumbersome.
The current key setup I have is the following:
Win+Escape
goes to Console2Win+F[1-4]
goes to specific tab of Console2Win+`/~
goes to GVim, or opens new GVim instance if not presentWin+S
goes to Visual StudioWin+C
goes to Chrome
Console2
In comparison to some of developers I worked with, I spend a lot of time at the command line. The key for comfortable environment is to consider that command line environment consists of:
- Display window, or "console host", and
- the actual shell that interprets my commands (e.g. cmd.exe, bash, powershell.)
Both the cmd.exe
window and the default console window on Windows is depressingly lacking functionality compared to the Unix counterparts. The default console host window has performance problems (for compatibility reasons) and is not very customizable. There are a couple of replacements available:
ConEmu is tightly bound to "Far Manager" and appears to be faster than Console2 but I have encountered some problems with ConEmu, like the lack of customization on keyboard shortcuts and some instability. Console2, in addition to being more stable for my purposes looks a bit more polished too. [NOTE: this observation was made a long time ago, and might not be true nowadays.]
Console2 supports tabbed console that you can customize for yourself. I tried to keep tab switching shortcut be the same as in chrome, i.e. CTRL+PgDown
and CTRL+PgUp
and shortcuts to particular tabs bound to CTRL+ALT+F[1..]
where they are redirected by AutoHotkey to activate Console2 window and switch to that tab by Win+F[1..]
global shortcut (which is comfortably very similar to Linux console ALT+F[1..]
shortcut). In addition I have Win+Escape
shortcut autohotkey'd to switch to Console2. All these shortcuts make my escape to console very fast.
Console2 has shell specified as c:\cygwin\bin\bash.exe -i
and start up directory of D:\home
to match my cygwin $HOME
.
Cygwin
I have grown dependent on the UNIX toolset and not having it around is painful. Console2 is configured to launch bash by default and I have .bashrc that:
- shows current git branch on prompt;
- enables git completion for bash;
- enables cygwin/X apps to open window on desktop (like gitk).
I also have /etc/fstab
set up so that D:\home
is mapped to /home/saulius/
.
The cygwin's ssh client is (subjectively) a bit more pleasant to use than putty, especially when you can switch to arbitrary console windows with the global Win+Fx shortcut.
Far Manager
Far Manager is an orthodox file manager that has a lot of shortcuts and provides very fast search and browsing on filesystem. It integrates with Console2 very nicely and has a lot of plugins to customize and extend the behavior.
Vim, "the" editor
The key plugins for vim I have found useful are:
- Ctrl-P: lighting fast file access
- NerdTree: directory tree browser
Other tools
This post was partly inspired by the great Scott Hanselman's 2011 Ultimate Developer and Power Users Tool List for Windows.
Published: 2012-05-15