Hidden Features of Xcode
Switch to Header/Source File
Option ⌥ Command ⌘ Up Arrow ↑
View > Switch to Header/Source File
Switches between the .m
and .h
files.
- In Xcode 4 this is ctrl Command ⌘ Up Arrow ↑
⌘ Command + Double-Click on a symbol
: Jump to Definition of a symbol.
⌥ Option + Double-Click on a symbol
: Find Text in Documentation of a symbol. (Only works if you have they symbol's Doc Set installed.)
Favorites Bar:
Favorites bar is just like you have in Safari for storing - well - favorites. I often use it as a place to store shortcuts (which you can do by drag-dropping) to files I am using right now. Generally this is more useful when I'm working with a large or unfamiliar project.
To show the Favorites Bar, select the following menu option:
-
View
>Layout
>Show Favorites Bar
Auto-completion Keyboard Shortcuts
Tab ⇥ OR Control ⌃ /: Select the next auto-completion argument.
Shift ⇧ Tab ⇥ OR Shift ⇧ Control ⌃ /: Select the previous auto-completion argument.
Escape ⎋: Shows the auto completion pop-up list.
Turn off the "undo past the last point" warning
When you attempt to undo after saving, you will get the following prompt:
"You are about to undo past the last point this file was saved. Do you want to do this?"
To get rid of this warning, enter the following into a terminal window:
defaults write com.apple.Xcode XCShowUndoPastSaveWarning NO
Change the company name in template files
Paste this into the Terminal application:
defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions '{"ORGANIZATIONNAME" = "Microsoft";}'
Change "com.yourcompanyname
" in all your templates:
- Find the directory:
/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/Application
- Use your favourite multi-file search-and-replace tool to change
com.yourcompany
to whatever value you normally use to build for a device. I used BBEdit's multi-find-and-replace after I opened the whole directory. You should be replacing the value in all theinfo.plist
files. I found 8 files to change. The number of times a build has failed because I forgot to change this string is ridiculous.
Quickly jump to a Group in the Groups and Files pane
- Control ⌃ Option ⌥ Shift ⇧ + <First letter of a Group name>
If you hold down the three keys above, you can quickly jump to groups in the left (Groups and Files) page by pressing the first letter of a groups name. For example, Control ⌃Option ⌥Shift ⇧T takes you to Targets and Control ⌃Option ⌥Shift ⇧S to Source. Press it again and it jumps to SCM. Sometimes it takes several tries for this to work (I don't know why).
Cycling between autocompletion choices
Control ⌃ .
Shift ⇧ Control ⌃ .: Cycles backwards between autocompletion choices.
Control ⌃. (Control-Period) after a word automatically accepts the first choice from the autocompletion menu. Try typing log
then Control ⌃. and you'll get a nice NSLog
statement. Press it again to cycle through any choices. To see all the mutable choices, type NSMu
then Control ⌃..
Quick Help
Control ⌃ Command ⌘ ? (While your cursor is in the symbol to look up)
Option ⌥ + <Double-click a symbol>
Help > Quick Help
To get to the documentation from the Quick Help window, click the book icon on the top right.
See the documentation for a symbol
- Command ⌘ Option ⌥ + <Double-click a symbol>
Takes you straight to the full documentation.
Make non-adjacent text selections
- Command ⌘ Control ⌃ + <Double-click in the editor>
Use the above shortcut for a strange way of selecting multiple words. You can make selections of words in totally different places, then delete or copy them all at once. Not sure if this is useful. It's Xcode only as far as I can tell.
Use Emacs key bindings to navigate through your code
This trick works in all Cocoa application on the Mac (TextEdit, Mail, etc.) and is possibly one of the most useful things to know.
- Command ⌘ Left Arrow or Command ⌘ Right Arrow Takes you to the beginning and end of a line.
- Control ^ a and Control ^ e Do the same thing
- Control ^ n and Control ^ p Move the cursor up or down one line.
- Control ^ f and Control ^ b Move the cursor back or forward one space
Pressing Shift ⇧ with any of these selects the text between move points. Put the cursor in the middle of a line and press Shift ⇧ Control ^ e and you can select to the end of the line.
Pressing Option ⌥ will let you navigate words with the keyboard. Option ⌥ Control ^ f skips to the end of the current word. Option ⌥ Control ^ b skips to the beginning of the current word. You can also use Option ⌥ with the left and right arrow keys to move one-word-at-a-time.
- Control ^ Left Arrow and Control ^ Right Arrow moves the cursor between camel-cased parts of a word.
Try it with NSMutableArray
. You can quickly change it to NSArray
by putting your cursor after the NS
, pressing Shift ⇧ Control ^ Right Arrow then Delete.