I’m a coder. I code. Coding involves a a lot of typing. Coders are known to be stubborn when it comes to switching away from editors that they’ve grown accustomed to. Ask a dozen developers what their favorite editor is and you’ll find at least 1 or 2 that still love the hell out of “vi”, an old-school, but definitely archaic, editor which, for whatever reason, they find still useful today. VI was designed for a time when computers didn’t have arrow keys so you can’t even cursor through your documents without doing some wonky key combination involving some control keys. I don’t use “vi” so I’m not the best person to speak of its history, but if you’re curious I’m sure there are plenty of fan pages out there dedicated to it.
Having spent a quite a bit of time in the office these last few months dealing (reluctantly) with XCode, Mono on OSX, Xamarin, and OSX’s built-in text editor, I have to say that the available editors on OSX are driving me up the wall.
As a coder who spends most of his day typing constantly, paging up and down through tens of thousands of lines of code, cutting, copying, and pasting large blocks of text hour after hour, there are certain keys that I use more often than someone who, for example, just uses a computer to surf the internet and watch Netflix. I press the Home, End, Page Up, and Page Down keys dozens of times every minute. I also might hold down the Control key and use the left and right arrows to jump to the previous/next word in a sentence, dozens of times every minute and select blocks of text by holding down the SHIFT key and any combination of above.
At some point in his life, Steve Jobs decided he wasn’t a fan of Home, End, Page Up, and Page Down, and in his infinite wisdom decided that it would be a better idea to make a computer featuring a Puck Mouse (Rated the #3 worst Apple invention of all time) and lacking these “useless” keys that just confused people.
You can still plug in a traditional keyboard to your Mac and these keys will, on the surface, function as you’d expect, or you can do as I do and use something like Synergy to share your keyboard and mouse from your PC with your Mac over the network. However, you’ll quickly find out that on OSX, the editors all have their own ideas about text editing, particularly when it comes to the function of these missing keys. Some assigned functions are more useless than others, and for someone who lives by the keyboard, the functionality of the keyboard on basic-traditional text editing functions is incredibly important to maintaining productivity.
In virtually every single editor ever released for Windows, basic text editing functionality is consistent, and productive.
Home – Moves to the beginning of the current line
End – Moves to the end of the current line
Page-Up – Moves up a whole bunch of lines
Page-Down – Moves down a whole bunch of lines
Ctrl+Home – Moves to the beginning of the whole document
Ctrl+End – Moves to the end of the entire document
Ctrl+Left – Moves to the previous word
Ctrl+Right – Moves to the Next Word
For example if I want to select the current line of text the process is consistent with just about every editor ever made for windows:
1. Press Home
2. Press Shift+End
If you hook up a keyboard that features these lost keys to a Mac, it will mostly work, but you’ll find that every editor you try to use on the Mac has a very different opinion as to what should happen when the user presses any of the keys. I find that XCode likes to page-up and page-down just fine, however, it doesn’t take the text caret with it, so any attempts to type send the editor screaming back to the other position.
What should “end” do? Should it go to the end of the document? The Current line? OSX editors can’t decide.
Most text editors uniformly agree that holding SHIFT and pressing any combination of keys designed to move the text caret around a document should highlight and select any text as it moves along.
But let’s assume for a moment that I submit to Steve Job’s infinite wisdom, and I accept his decree that the home, end, page-up, and page-down keys are useless. In this scenario, things get a bit easier to handle on the Mac, as editors seem somewhat unified around what approach to use to get around this limitation. I, however, currently can’t think of how to rapidly move between pages of code (important when I want to copy a whole function or class). Furthermore, just one example, of many involves a task that I do ALL the time on the two editors I use most often on OSX. The process of selecting a line of code is different between XCode and Mono.
1. Press Command+Left
2. Press Shift+Command+Right
1. Press Fn+Left
2. Press Shift+Command+Right
When I have more time to dedicate to pondering on this subject, I’ll do a full comprehensive rundown of all the crazy keyboard differences among the OSX text editors for anyone who cares. For now, I’ve already spent too much time writing this, and since my productivity is lower than I’d like due to the fact that I’m stuck working on a Mac today, I need to dedicate extra time to catching up.