Xcode History (back/forward) Keyboard Shortcut? - xcode

Back Arrow Broken In Xcode?
Is there keyboard command to go back/forward one file at a time.
Xcode 3.2 changed the behavior of Cmd-Opt <-- and -->. As noted in another question, they do not operate on a file level like in previous versions of Xcode, but on an "edit point", making it cumbersome to flip through a list of files (the quick way to do it, since Xcode does not support Tabs, as in Eclipse).
Rob Keniger found a partial solution that he noted in another post:
"Hold down the option key while you click the forward/backward arrows ..."
But this requires fiddling with the mouse. Is there any way to do it with the keyboard only?
EDIT:
Later versions of Xcode (v7.2+) now have a Navigate menu (and it changes the keyboard shortcuts yet again):

In XCode 4.4 the following sequence works:
Cmd + Ctrl + ←
and it operates on a file level.

On Xcode 8 I use 2 fingers left / right

Beginning in XCode 3.2.3, the following key sequence works:
Cmd + Option + Shift + ←
Without the Shift key, it just goes back to the previous cursor position. Adding Shift jumps to the previous file (next file, in combination with →).

Navigation shortcuts for Xcode

Related

Shortcut for moving tabs in Mac Terminal application?

I am looking for a shortcut to move the current tab left and right through the tab list. Note that I don't want to switch to the left or right tab with the Cmd+{, Cmd+} shortcuts, but to move the tab.
try iterm2, http://iterm2.com/#/section/home
command + left or right arrow to switch tabs
command + shift + left or right to move tabs
According to Terminal -> Preference -> General,
Command + Ordinal can be used to switch tabs, (Ordinal between 1 to 9)
e.g.: Command + 1: switch to the first tab (left-most tab).
you can add a shortcut to have command+left/right arrow go to previous/next tab:
No, it is not possible to move tabs using keyboard on Terminal app.
I would need to drag them by cursor or try iTerm2 instead.
I don't think you can, and it doesn't appear on any shortcut list i have seen for any browser or application :/
however there seems to be a plugin of sorts for Chrome which does this:
plugin link that might work.

Move to beginning of text in Xcode

I know I can bind keys to "Move to beginning of line", but this ignores the indentation.
What I'm looking for is to move to the beginning of text on a line, so that:
CGRect example = CGRectMake(view.frame.origin.x,
view.frame.origin.y,|
pressing a key will move the cursor to the beginning of the "view" word in this example (char | is cursor).
It is extremely annoying that currently I have to press 3 commands to get to the beginning of the text when inside a code block (cmd <-, opt ->, opt <-).
There's no standard way to accomplish it in XCode, so I've written an XCode plugin implementing this feature:
https://github.com/insanehunter/XCode4_beginning_of_line
Under the hood it overrides XCode's source editor keyboard action dispatch method and implements beginning/ending of line jumps in enhanced way.
Hope it helped.
As of 7.3 (not sure when it was added), Xcode seems to have turned this on by default. Cmd-left in the Key Bindings preference pane is now bound to "Move to Beginning of Text."
Personally, this drives me bonkers, so I've changed it back to "Move to Beginning of Line." But for people who want this behavior, it's good to know that there's now a built-in way to get it.
If you've copied your Key Bindings Set, you may not be seeing the new behavior yet. If not, just search for "beginning" in the Key Bindings preferences and adjust them to your liking.
Use option + ← to jump across entire words.
(That means, hold the option while pressing the left arrow key)
Actually, there is a faster and simpler way to achieve this as Mac OS supports some Emacs (or Unix) keybindings quite well.
You can use Ctrl-a to jump to the beginning of a line. Which means, hold 'Ctrl' key and press 'a' on keyboard.
For your more information, it is also handy to use
Ctrl-e: jump to the end of a line
Ctrl-n: move to next line
Ctrl-p: move to previous line
What's more, these fast keys can be used in terminal and text fields such as this StackOverflow answer editor on Mac OS, too.
Hope that helps.
I'm using Xcode 7.2 and was able to make my own macro to automate those 3 commands you mentioned above (cmd <-, opt ->, opt <-). You can edit the IDETextKeyBindingSet.plist file which defines all the key-bindings to add your own.
Mine was located at /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist
Add the following to create your own macro
<key>Custom Keys</key>
<dict>
<key>Move to non-whitespace beginning of line</key>
<string>moveToBeginningOfLine:, moveSubWordForward:, moveSubWordBackward:</string>
</dict>
Relaunch xcode and in your Preferences > Key Bindings tab, search for your custom macro and set it to cmd <-. Now it will run those 3 commands and effectively moves your cursor to the beginning of the text in the line.
I don't have an exact solution, just one slight improvement for Xcode 4. You could set up a keyboard mapping for "Move Expression Left" (Xcode prefs > Key Bindings), which is a little more than Opt ←:
s = [NSString string] |
if | is the cursor position, pressing a "Move Expression Left" keystroke will bring it to the beginning of the expression on the left of it, so in that case before "[NSString". Opt ← will only move before "string".
(Side note: I do see an action command called "Move to Left end of line" and another one called "Move to beginning of line." To my experience, these do exactly the same behavior in Xcode 4.0.2: this looks to me like a bug, unless I'm missing something.)
It seems that the simplest way, as already mentioned is
1) Go to the beginning of the line (Cmd + left arrow key)
2) Jump to right word (Alt + right arrow key)
3) Jump to left word (Alt + left arrow key)
Unfortunately (Alt + left arrow key) and (Alt + right arrow key) ignores comments, brackets, etc and therefore the method above will not always work. If this is not a problem, then there is also one solution for the BetterTouchTool users. One can create a sequence of actions (commands) that will be called one after another and assign it to Home button. To do so, open the preferences, go to Keyboard tab, Add new shortcut and assign Home button to the (Cmd + left arrow key). Then click Assign additional actions twice, first one for the (Alt + right arrow key) and the second one for the (Alt + left arrow) key commands.
Hopefully this helps.
Tested on XCode 10:
Step1: Open the file located in the next path by a text editor
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
Add the next elements to the end of the file:
<key>Sublime Commands</key>
<dict>
<key>Cut Current Line</key>
<string>selectLine:, cut:</string>
<key>Copy Current Line</key>
<string>selectLine:, copy:</string>
<key>Duplicate Current Line</key>
<string>selectLine:, copy:, moveToBeginningOfLine:, paste:, moveToEndOfLine:</string>
<key>Delete Current Line</key>
<string>selectLine:, deleteToEndOfLine:, moveToEndOfLine:</string>
<key>Move To First Char In Line</key>
<string>moveToBeginningOfLine:, moveSubWordForward:, moveSubWordBackward:</string>
</dict>
The previous last key 'Move To First Char In Line' will do your request, but I mentioned also other keys.
Now save the file.
Step2: Close XCode and reopen it.
Step3: Navigate to keybinding in xcode preferences then assign your shortcut.
XCode -> Preferences -> Key Bindings
Then search for 'Move To First Char In Line' and assign your shortcut.
In this Xcode extension, Linex, the feature Line Beginning can move to the first non-whitespace character in a line, and also toggle between that and the real beginning.
Works for Xcode 9, perhaps Xcode 8.

Moving caret back/forward to previous/next editing position within a document in Xcode 4?

In Xcode 3, I could go back to previous editing point within a document by pressing Command+Control+[Left|Right]. (I'm confusing it was Control or Option... However) In Xcode 4, the key combination is assigned to other feature. Code folding..? What did this key change into?
The shortcut in XCode 4 for "Go forward/backward" is "Control" + "Command" + "Arrow"
This is super annoying for me. When I tried to change the shortcut in the Shortcut Editor back to the Xcode 3 way, Xcode crashes. Fun.
Another option for switching to Previous/Next editing position (Go Back/Go Forward) is using two finger swipe (left for Go Back, right for Go Forward). I realize that this is not a keyboard shortcut but if you are using a Trackpad, it is much faster than trying to click on the buttons.
Note: The pointer does need to be in the editor for swiping to work.
Not 100% sure what you mean by "previous editing point", but Command+Option+Left|Right is code folding. I use Option+Left|Right and Control+Left|Right to move back and forth within the code to get to particular points.
A list of Xcode keyboard shortcuts can be found here

Where is the basic Control-TAB (MRU) behavior in Xcode?

In most multi-document editors for windowing environments, Control-TAB will utilize an MRU list to bring the user back to the last visible file. What is the appropriate command to accomplish this in Xcode 3.x?
I currently have Ctrl-TAB mapped to "View|Previous File", however this does not appear to be an MRU. Worse yet, if it hits the "beginning" of the list (should be a circular buffer), it falls back on inserting an actual TAB character into the text editor.
As of Xcode Version 3, there isn't anything that's exactly like the MRU you describe - however, check out the discussion on this page for some options that will get you closer to the behavior you want.
In recent XCode (10.3), when in a code editor press:
ctrl+1, right, right
Then use up and down keys and enter
to select from the MRU sorted list of recent files.
There is even an option to increase the size of the history.
In Xcode 3 (or any Mac application) you can use Command-Tilde (⌘~) to switch between open windows.
In Xcode 4 you use ⌘} for next tab and ⌘{ for previous tab - command shift bracket.
As a side note, for some reason Xcode 4 won't let me set the key binding for previous/next tab to the standard Control-Tab. When I try it puts in Command-Control-Tab.

How can I navigate backwards in Xcode?

In Visual Studio I can navigate backwards by pressing Ctrl + -. This is very useful when checking out the definition of a function and then immediately going back to the code I was working on.
How can I do this in Xcode? (I'm using version 3.1.2)
* Writing this if people using Xcode 4 need the answer for their versions:
In Xcode 4 preferences, it's configured to be ^ + ⌘ + ← (control-command-left arrow) to navigate back and ^ + ⌘ + → (control-command-right arrow) to navigate forwards.
Xcode 3.1.x is admittedly a bit weak in this respect. Happily, the navigation #zoul mentions (The back/forward arrows in the header bar, or ⌘⌥← and ⌘⌥→) is significantly improved in Snow Leopard, and should provide the finer-grained navigation you're hoping for. Sorry there's not an immediate solution, but hopefully it helps to know that a fix is coming...
There’s a Cmd + Alt + ← that goes back in editor history, and conversely Cmd + Alt + → that browses forward. (Not sure if this is exactly what you are looking for.) It goes well with Cmd + Alt + ↑ that switches between the header and the implementation file.
There are small arrows on top left corner of editor pane in Xcode.
On Macs with multitouch trackpads, you can also use three-finger-swipe left and right to navigate through the file history.
Also re: MrDatabase's comments on stefanB's response, if you've been actually jumping from definition to definition (by, for instance, holding down Command and clicking on a symbol) as opposed to just scrolling, I believe that the file history should track navigation even within the same file... perhaps that was a change in Xcode 3.1.3.
Control + Command + Arrow keys work for me.
Other than the 'complete shortcut list', I don't know.
You can find previous with ⇧⌘G, but that's not really what you were after I think.
In Xcode 13.0.0 you can use:
(OS: Mac 11.6)
Control + Command + → or ←
Hope this help!

Resources