The command line is a powerful abstraction in the developer’s toolbox—a succinct line of communication directly into the heart of the operating system. A skilled developer can take a small window filled with nothing but a blinking cursor and turn it into a productive environment for building websites, apps, and experiences that delight, amaze, and inspire. But sometimes, we developers get so caught up in the productive asceticism of the command line that we forget about the world outside and all it has to offer. Three apps have me rethinking my Text Mode lifestyle.
Version control systems are the fine wine of software development. Choosing your first one is daunting, but once you’ve had a taste, you can easily spend a lifetime finding your favorite vintage. Personally, I favor an implementation of Git. It has the right blend of features to keep me interested, and it pairs nicely with the other tools on my desktop.
Lately, one Git app has been drawing my eye away from the command line. GitUp is an app for visualizing the commit graph, staging changes, and rewriting history. Although there are many, many command line tools for doing the same jobs, they all share a common problem: ugliness.
Git’s built-in graph visualizer is great in a world where all you have is unicode characters to represent line segments, but I don’t live in that world anymore. We can render arbitrary shapes now, and it’s wonderful.
GitUp launches quickly and looks great. Fixing typos in commit messages and rebasing branches is a breeze. It has ample keyboard shortcuts for speeding things up when I happen to be doing something repeatedly, but since all of its functionality is just a context-click away, I don’t stress out trying to remember them as I do with command line arguments.
I still use Git on the command line, and it will be part of my workflow for a long time, but more and more often, when I’m in a repo, about to make changes, I find myself typing
gitup instead of
There’s no tool more important to a developer than the text editor. I was a Vim user for a long time, but Sublime Text (with a couple of additional packages) has been my editor of choice for several months now.
Vim is fantastic, but for an aesthetically minded developer, it has some annoying quirks. Because it lives in a grid of fixed-width rectangles, Vim’s presentation lacks the visual nuance of differing type sizes, line heights, and even basic iconography that we take for granted in apps like Mail and Safari. Also, scrolling is just terrible. There are ways around the jerky scrolling problem, but once you’ve experienced the GPU-accelerated scrolling in Sublime (or really any modern GUI app), Vim’s presentation of long files starts to feel a bit like Linux on the desktop. Workable, but not wonderful.
Browsing files in Vim with NERD Tree is similarly blasé. It’s okay in a pinch, but it’s just a little bit slow and just a little bit ugly. Sublime’s project side bar, on the other hand, is fast, fluid, and delightful to work with.
One other minor feature that has me hooked is unique (as far as I can tell) to Sublime: multiple arbitrary cursors. I don’t use it all that often, but once in a while, it’s really nice to be able to click around a few times and do the same thing in multiple places without having to think about recording a macro and getting all the steps right.
As a longtime Vim user, one area where Sublime falls down is actual text movement. The built-in Vim emulation layer, Vintage Mode, is fine if you were a light Vim user before switching, but it feels like going back to Notepad++ if you were a St. Pope devotee. Fortunately, there are a lot of us Vim nerds out there, and the Sublime package community has answers for almost every deficiency in Vintage Mode. The Vintageous and Vintageous Plugin Surround packages make Sublime feel right at home in edit mode.
I still use Vim often, but I find myself living the Sublime lifestyle more and more lately. The editor has earned its name.
The final app that’s changed my Text Mode habits is Terminal on macOS. For the longest time, I’ve been using tmux to script my workspaces so I can keep a small collection of development servers and a Vim buffer open and ready to go. When I switched to Sublime, I realized that all I was using tmux for anymore was to manage the servers.
While working on an app, I’d keep them open in the corner of my display and watch for any errors. Occasionally, something would explode, and I’d need to dig through the ashes to find out what happened. In tmux, this is a doable, but a bit kludgy. It has a scrollback buffer, but engaging it involves a mode switch and jerky scrolling. I recently switched back to using plain old Terminal tabs for my development environment.
My startup scripts aren’t quite as succinct, but the interface is much, much nicer. Scrolling is fast, I can switch tabs using the same keyboard shortcuts I use in Safari, and I no longer have to think about how much scrollback history I want to save. As an added perk, my color scheme of choice, Solarized Dark, works perfectly in Terminal and is…let’s just say tricky to set up correctly in tmux.
I thought I was using tmux for efficiency, but it turns out I might be more efficient without it. When I removed the trivial inconveniences of launching tmux and remembering yet another set of keyboard commands, I found I was much happier with my setup.
A Better-Equipped Toolbox
We’re always working to improve our toolboxes here at Atomic Object. It helps us build better apps faster and keeps us happy in the process. Command line proficiency is still super-important. It’s one of the things we look for when interviewing prospective Atoms. But sometimes, even battle-tested tools need an update. Have you found any Text Mode development alternatives? Let me know in the comments below.