MacOS – OSX: modifying text selection with ⌘⇧→ and ⌘⇧←

keyboardmacostext inputtext-editortext;

I've selected some text using my keyboard, starting at the bottom line and moving up (the | character indicates the cursor position):

AAA |{BBB CCC

DDD} EEE FFF

create selection


Now, I would like to change the selection so that it starts at the end of the first line, i.e. so that it looks like this:

Expected result:

AAA BBB CCC |{

DDD} EEE FFF


I can reduce the selection word-by-word with :

manipulate selection with option-shift-arrows


But the natural way to do it would be via , to jump directly to the end of the first line. In many decent text editors this works fine (for instance Sublime Text 2). They also keep the | position visible when text is selected btw.

The default behaviour of OSX apps, however, is that they ignore the fact that the cursor is currently at the start of the selection, and moving it to the right should remove the selection there. Instead, always extends the selection from its end until the end of the line, no matter where the cursor currently is:

Actual result:

AAA {BBB CCC

DDD EEE FFF}|

manipulate selection with command-shift-arrows


Is there any way to make also native OSX apps behave the expected way?

I'm on OSX Yosemite 10.10.2 but I think this issue has been there as long as I can remember.

Best Answer

Mac doesn't use the cursor position if you have a multiple text selection, it considers the cursor is at 'all selected text'.

You can see this demonstrated if you use Cmd ⌘ Shift ⇧ instead of
Adding to the selection with Shift ⇧ includes the previous selection.

Not a fix, but a workaround might be which would move the cursor to the end of your current selection, simultaneously deselecting it, then Cmd ⌘ Shift ⇧ to select to the beginning of the line.