Making Xcode Feel Like HomeMay 5, 2015
When it comes to software development, I am most at home in my favorite text editor, Sublime Text. However, the development tools provided in Xcode for iOS development make it a vital part of the app development process. As such, I am on a never-ending quest to make Xcode feel more like home.
Where to Begin?
Alcatraz provides an interface right in Xcode for searching for and installing plugins, managing color schemes, and even downloading new project templates.
A Fresh Coat of Paint
Step one in my quest for a more homey Xcode was to acheive visual continuity between the tools I use every day. This means installing the same color scheme I use elsewhere (Sublime Text, zsh). My color scheme of choice is Tomorrow Night – Eighties. Luckily Alcatraz has it available to install for Xcode.
Unfortunately, now that we have a dark color scheme installed, the IBeam cursor becomes nearly invisible when over an editing pane. I haven’t found a great way to fix this, other than providing Xcode with a different cursor. I found this cursor to look pretty nice. Copying that cursor to
and restarting Xcode will cause Xcode to pick up the new IBeam cursor. Note however, any time you update Xcode this change will be overwritten.
Plug It In
So now Xcode has a shiny new coat of paint, but what about bending it to fit the workflow we are used to? For that we need a few more plugins. Three that I have found useful are GitDiff, Xcode-beginning-of-line, SCXcodeMinimap, and Clang Format.
Xcode-beginning-of-file is just a simple plug in that makes my navigation around the editor pane and little easier for me. GitDiff provides useful gutter marks showing me what has changed in the current file, something I have grown accustomed to with the Modific plugin for Sublime Text.
And of course, we would not be at home without the minimap. While it may seem silly at first, I find the sublime minimap provides a great enhancement over the traditional scrollbar.
Unfortunately, after some use, it appears that SCXcodeMinimap has some issues where scrolling in the minimap conflicts with the built in scroll, causing issues navigating around a file. As such, this is one feature I will have to live with out (at least for now).
Clang Format is a great plugin that has taken the place of a linter I would normally use in Sublime. Clang Format allows you to specify a set of rules by which you want to format your code. Running the tool will then modify your code to abide by those rules. You can use one of the built in styles, or customize one to your liking in a
.clang-format file in your repo. This is what mine looks like:
BasedOnStyle: LLVM IndentWidth: 4 ObjCBlockIndentWidth: 4 UseTab: Never BreakBeforeBraces: Linux AllowShortIfStatementsOnASingleLine: false AllowShortFunctionsOnASingleLine: false AllowShortBlocksOnASingleLine: false AllowShortCaseLabelsOnASingleLine: false AllowShortLoopsOnASingleLine: false IndentCaseLabels: false ColumnLimit: 120 SpacesBeforeTrailingComments: 2 AlignAfterOpenBracket: true
The Basic Comforts
One thing to make Xcode really feel like home is customizing its keyboard shortcuts. The commands I use most often are “Open Quickly…”, “Show Document Items”, “Select Line”, and “Edit All in Scope”, which I have mapped to cmd-P, cmd-E, cmd-L, and cmd-D, respectively. Additionally, I remapped the Home and End keys to jump to the beginning and end of the current line, rather than beginning and end of the file (as is the default).
I chose these shortcuts to mimic the ones I use most in Sublime. The variance here is that Xcode doesn’t really have the multi-cursor editing capabilities of Sublime, so “Edit All in Scope” will have to do as a replacement. Additionally the Sublime parallel to “Show Document Items” is the “Goto Symbol” command. “Goto Symbol” is mapped to cmd-R in Sublime, but I couldn’t bring myself to break that default in Xcode, so one key over (cmd-E) will have to do.
Laying out the Furniture
The final step to making Xcode feel like home is roping in the various tabs and panes Xcode opens (e.g. the Debug pane). My solution for managing the Navigator, Debug, and Utilities panes is to map the shortcuts for toggling each of them to cmd-opt-left, cmd-opt-down, and cmd-opt-right respectively.
I make heavy use of the Assistant Editor (cmd-opt-return), as I am used to editing with multiple editor panes in Sublime Text. In order to make the Assistant Editor a little more useful for my workflow, I have enabled “Uses Focused Editor” under
Xcode Preferences > Navigation. This enables all of the navigation shortcuts (“Open Quickly…”, “Show Document Items”, etc.) to work in the Assistant Editor when it has focus.
Living in It
A workflow should never be so rigid as to not be open to other ideas. If you have any convictions about how to make Xcode work for you, I would love to hear them in the comments below.
Stay in the loop with our latest content!
Select the topics you’re interested to receive our new relevant content in your inbox. Don’t worry, we won’t spam you.
Michigan Software Labs Named One of the Country's Best Small and Medium Workplaces by Fortune copyOctober 16, 2020
Michigan Software Labs has been named as one of the 100 Best Small and Medium Workplaces based on an independent survey by consulting firm Great Place to Work® and Fortune Magazine. Michigan Software Labs came in 64 on the list.Read more
Working From Home: Lessons Learned From A Forced ExperimentMarch 19, 2021
Prior to the pandemic, WFH seemed like a frightening notion for many. Organizations wondered if employees could actually be productive working remote? Well, it’s been a year since our forced experiment first began and what has it taught us? …That it was great!…until it wasn’t.Read more
Michigan Software Labs joins the Inc. 5000 list of fastest growing companies in the U.S.August 12, 2020
Michigan Software Labs has earned its first recognition in Inc. magazine’s influential Inc. 5000 list. The list represents a unique look at the most successful companies within the American economy’s most dynamic segment—its independent small businesses.Read more