It’s been a while, but I want to pick up where I left off with another installment of Tools of the Trade. This time, I’d like to talk about tools that are more specific to my programming workflow.
iTerm2
iTerm2 is one of my most used programs, because as a developer, I live in the terminal. I use iTerm2 instead of Terminal.app (OS X’s default terminal client), largely due to the support for true split screens. In Terminal.app, a split screen is really just a different view to the same process; you can view the history and type in it, but it doesn’t provide the ability to run multiple sessions at once. In iTerm2, each split is a new process, so you can do different things in each split. My usual setup is to have a tab per project, and on the tabs, I include a split for watching my logs, running the server/support processes and running a Rails console.
From perusing the documentation and the site, I know that iTerm supports a ton of other things, but to be honest, this is the one feature that keeps me on iTerm2.
ZSH
Inside of my terminal sessions, I prefer to use ZSH over Bash due to a number of features. The most obvious one for me is the ease of ZSH’s auto-completion functionality, however, things like global aliases, substitution in previous commands, and features like “magic equals”. Magic equals, for example, is the ability to type =foo
in your command, and have ZSH expand it to the first foo in your $PATH
.
This doesn’t even begin to cover ZSH, and to be honest, I don’t have enough ZSH knowledge to do it justice. If you are interested, there are tons of guides and cheatsheets out there. In addition, the documentation is great, and reading the man pages can tell you as much as you want to know.
Emacs, Sublime, and Vim
Some people may call me a heretic, but I use Emacs, Sublime and Vim interchangably when editing code and files. I’ve been slowly switching to Emacs as my primary editor, due to the extreme customizability, however, I often use Sublime for speed (as I’m still new at Emacs), and Vim is my goto editor when working on a server.
If you are not into the older editors (Vim or Emacs), I highly recommend Sublime, as it is cross platform, and offers many of the features that Textmate users have loved for years, such as bundles, generous keyboard shortcuts, and programability (in Python). It also has slick looks and a vibrant community with a lot of plugins. One plugin that is a must have is the Package Control plugin which will give you the ability to install other plugins from within Sublime.
Conclusion
In a nutshell, iTerm2 with ZSH and Emacs/Vim/Sublime make up my day to day workflow no matter what language I am programming in. They are simple by default (well, perhaps not Emacs), yet they are able to be customized to do what I need. They don’t force me to use them a specific way, and that, is something I look for in a tool. Let me know in the comments what you use, or if you found a new tool via reading this.