Сочетания клавиш для выбора CamelCase в Xcode в OS X

Я трачу очень много времени на редактирование текста в Xcode, и я хотел бы маневрировать вокруг текста в остальной части текстовой системы Cocoa, чтобы предложить идентичный опыт. Есть 3 версии сочетаний клавиш курсора, которые я регулярно использую в Xcode (для краткости показаны только прямые версии без изменения выбора):

  1. + Переместить курсор на 1 подслово вперед (^camelCase -> camel^Case -> camelCase^)
  2. ⌥ Option+ Переместить курсор на 1 слово вперед
  3. ⌘ Command+ Переместить курсор в конец строки

Привязки клавиш OS X по умолчанию учитывают 2 и 3, но есть несоответствие с 1. Вне Xcode + ведет себя как ⌘ Command+ . Ужасно часто это не применимо, но каждый раз, когда + переводит меня в конец строки в Mail или что-то в этом роде, в моем мозгу словно взрывается маленькая фейерверк. Меня просто раздражает то, что я готов инвестировать в любой хакерский прием, чтобы «исправить» поведение раз и навсегда.

Чтобы не зацикливаться на старой теме, я уже знаю об этом небольшом кусочке и этом списке селекторов , но я не знаю ни одного API в Cocoa Text System для выбора подслов. Может быть, где-то есть недокументированный API?


Я не всегда пытаюсь сделать выбор в camelCase вне Xcode с помощью сочетаний клавиш, но когда я это делаю, я хочу, чтобы OS X подчинялась.

На моем Mac ⌃→ переключает пробелы по умолчанию, и это не ведет себя как ⌘→
Это предполагает, что вы отключили этот ярлык в Системных настройках.
Неа. В OS X (Mavericks) по умолчанию ⌃→ переключает пробелы. osxdaily.com/2011/09/06/…
Хочешь тоже. Я думаю, что может быть внешний инструмент, такой как PuntoSwitcher Яндекса, для управления курсором ввода в любом текстовом поле.

Ответы (2)

Извините, но то, что вы хотите, невозможно.

Вы можете попробовать добавить сочетания клавиш XCode, которые делают это

"^\UF702" = "moveSubWordBackward:";                     /* Ctl-Left Arrow */
"^$\UF702" = "moveSubWordBackwardAndModifySelection:";  /* Ctl-Shift-Left Arrow */
"^\UF703" = "moveSubWordForward:";                      /* Ctl-Right Arrow */
"^$\UF703" = "moveSubWordForwardAndModifySelection:";   /* Ctl-Shift-Right Arrow */
"^\177" = "deleteSubWordBackward:";                     /* ctl-delete */
"^\UF728" = "deleteSubWordForward:";                    /* ctl-forwardDelete */

в ваш ~/Library/KeyBindings/DefaultKeyBindings.dictфайл, но если приложение не написано для ответа на эти методы, оно не будет работать. Как вы сказали, эти методы не являются частью стандартной текстовой системы, поэтому эти вызовы в приложении просто останутся без ответа или вы получите системный звуковой сигнал.

Чтобы перейти к верблюжьему регистру (также известному как подслова) к правильному использованию

^+ [чтобы переместить подслово влево

^+ ]чтобы переместить подслово вправо

Я подтвердил это в OSX 10.10.1 с Xcode 6.1.1.

Я думаю, что суть этого вопроса заключается в том, чтобы получить команды подслова Xcode за пределами этого одного приложения и в остальных стандартных приложениях.
@bmike, возможно, это так. Если это так, то, вероятно, придется кодировать это, потому что эта функция присуща Xcode, а не ОС. Но можно было бы надеяться , что пользователь Xcode знает это.