Заставьте Mac OS X «Option-Стрелка» работать как Windows «Ctrl-Стрелка»

Я полагаюсь на команду « Ctrl- » в Windows для навигации по текстовым документам.

Это полезное сочетание клавиш быстро приведет меня к началу следующего слова. Например, следующая последовательность иллюстрирует, что произойдет с положением курсора после последовательных нажатий Ctrl- ("^" будет представлять курсор):

^The quick brown fox jumped over the lazy dog
The ^quick brown fox jumped over the lazy dog
The quick ^brown fox jumped over the lazy dog
The quick brown ^fox jumped over the lazy dog
The quick brown fox ^jumped over the lazy dog
...

И если вместо этого я начну нажимать , курсор будет перемещаться в те же самые места в документе, просто в другом направлении (что идеально, потому что положение курсора предсказуемо, что позволяет мне быстрее выполнять свои действия). правки):

The quick brown fox ^jumped over the lazy dog
The quick brown ^fox jumped over the lazy dog
The quick ^brown fox jumped over the lazy dog
The ^quick brown fox jumped over the lazy dog
^The quick brown fox jumped over the lazy dog
...

Mac OS X имеет аналогичную комбинацию клавиш ( Option- - я специально сопоставил " Ctrl" с " Option", чтобы я мог получить ту же функциональность так, как я привык).

Однако « Option- Arrow» переводит меня в конец текущего слова при использовании клавиши со стрелкой вправо, как показано здесь:

^The quick brown fox jumped over the lazy dog
The^ quick brown fox jumped over the lazy dog
The quick^ brown fox jumped over the lazy dog
The quick brown^ fox jumped over the lazy dog
The quick brown fox^ jumped over the lazy dog
...

И, что еще хуже, движение в другом направлении не возвращает вас к тому же месту, что и движение вперед, а приводит вас к началу последнего слова:

The quick brown fox^ jumped over the lazy dog
The quick brown ^fox jumped over the lazy dog
The quick ^brown fox jumped over the lazy dog
The ^quick brown fox jumped over the lazy dog
^The quick brown fox jumped over the lazy dog
...

Это очень расстраивает меня, так как мне нужно часто переключаться между Windows и Mac, и очень редко я хочу перейти к концу текущего слова (зачем мне это нужно, если я Shiftтакже не держу " "? ). Я всегда хочу перейти к началу следующего слова.

Я готов пойти на многое, чтобы версия для Mac работала так же (купить программное обеспечение, написать пользовательскую команду Applescript, привязанную к этим сочетаниям клавиш), поэтому я ищу предложения.

Существуют ли какие-либо существующие инструменты, которые изменят это для меня?

Как бы вы предложили "исправить" это?

Спасибо

РЕДАКТИРОВАТЬ

Мне удалось создать «Сервис» в Automator и использовать следующий AppleScript:

on run {input, parameters}

    tell application "System Events" to key code 124 using {option down}
    tell application "System Events" to key code 124

end run

Затем я привязал эту службу к нажатию клавиши « Command- », используя настройки «Клавиатура» в Системных настройках.

Однако, чтобы это сработало, мне нужно убрать палец с Commandклавиши... что делает это бессмысленным. Это также медленно и, похоже, не работает в приложении, в котором мне больше всего нужно, чтобы оно работало (Xcode).

Эй, отличный вопрос. Как коллега-пользователь Windows + Mac, я могу предложить установить для вашей клавиши Command значение Opt, верхнюю клавишу Opt — Ctrl, а клавишу Ctrl — Command. Я обнаружил, что это лучший способ получить мышечную память из окон. Особенно, поскольку во многих приложениях клавиша alt работает одинаково, и ее наличие рядом с пробелом очень помогает. Кроме того, потому что Ctrl теперь будет находиться в положении клавиши Windows и может быть легко сопоставлено с другими сочетаниями клавиш, имитирующими сочетания клавиш Win +. Option часто имеет проблемы с переназначением.

Ответы (5)

Вот как вы можете заставить ⌃ Controlклавиши со стрелками работать так, как вы описываете. Скопируйте следующий список свойств в ~/Library/KeyBindings/DefaultKeyBinding.dict(вы можете создать каталог, если он еще не существует):

{
    "^\UF703" = ("moveWordForward:", "moveWordForward:", "moveWordBackward:");
    "^$\UF703" = ("moveWordForwardAndModifySelection:", "moveWordForwardAndModifySelection:", "moveWordBackwardAndModifySelection:");
}

Это настроит ⌃ Control+стрелку для перехода к началу следующего слова (используя обычную навигацию OS X три раза: к концу текущего слова, к концу следующего слова, затем обратно к началу следующего слова). Я также включил версию, которая работает, ⇧ Shiftпоэтому вы можете выбирать текст по ходу дела.

Предупреждение: это будет работать только в приложениях Cocoa, но я думаю, что обычная ⌥ Optionнавигация + стрелка тоже работает. Кроме того, не забудьте перезапустить свои приложения!

Ого! Как раз то, на что я надеялся... спасибо! Позвольте мне попробовать, тогда я отмечу ответ.
Большое спасибо! Работал как шарм. FYI "Key Bindings" против "KeyBindings"... Я использовал "KeyBindings", и это сработало. Не уверен, что это имеет значение. Жаль, что Xcode переопределяет их своими собственными, менее мощными привязками клавиш.
Упс, да, я имел в виду KeyBindings! Xcode довольно хорош, потому что вы можете перемещаться по подсловам camelCase.
Мне нравится навигация camelCase. В идеале мне бы хотелось, чтобы Visual Studio работала в Xcode... ну ладно.
Вы можете, по крайней мере, настроить Xcode. В настройках есть вкладка для изменения привязки клавиш.
Да, но я могу использовать только их исходные действия... Я не могу сделать ничего классного, как вы, когда я могу связать несколько действий, соединенных вместе, с одной комбинацией клавиш... разве что я что-то упустил? (Надеюсь, я!)
Нет, вы, к сожалению, правы, насколько я могу судить. Однако вы можете использовать DefaultKeyBindings.dict для настройки дополнительных ярлыков для активации некоторых пользовательских действий Xcode... (вы можете узнать, что они используют class-dump )

Вещи, которые вы могли бы попробовать. Я не проверял их, чтобы увидеть, будут ли они выполнять нужную вам функцию.

Существует бесплатная утилита с открытым исходным кодом для переназначения ключевых команд для Mac OS X под названием DoubleCommand . Это расширение ядра, поэтому оно работает на очень низком уровне.

Еще одна бесплатная программа, которую сотрудники DoubleCommand рекомендуют вам проверить, — это KeyRemap4MacBook . Вам нужно использовать один или другой; они будут конфликтовать, если они оба установлены на вашем Mac.

Используя KeyRemap4MacBook в OS X 10.11.x, чтобы заставить Control + [Стрелка] работать, как в Windows, прокрутите вниз, пока не найдете « Для пользователей ПК », а затем отметьте (для меня вариант шесть) «Использовать управление стилем ПК + вверх / вниз / влево / вправо ". Там есть и другие очень полезные опции. Определенно проголосовал за этот ответ, и, кроме того, это не стоило дополнительных сотен долларов!
Это не отвечает на вопрос ОП, но отвечает на мой личный вопрос: как переназначить ярлыки в MacOS? Возможно, вы сможете выполнить некоторые настройки MacOS, но для всего остального я рекомендую Karabiner Elements (ранее KeyRemap4MacBook)

После многих лет раздражающих сопоставлений по умолчанию в OSX я поменял свои клавиши Command и Control и хотел, чтобы клавиши Control + Arrow обеспечивали функции перемещения по словам вперед и назад вместо BOL / EOL. Принятый ответ сработал для меня, за исключением того, что ^ был изменен на @, так как теперь я использую Control вместо Command. Я также сопоставил менее используемые функции BOL/EOL с комбинациями клавиш Option + Arrow.

{
    "@\UF702" = ("moveWordBackward:");
    "@$\UF702" = ("moveWordBackwardAndModifySelection:");
    "~\UF702" = ("moveToBeginningOfLine:");
    "~$\UF702" = ("moveToBeginningOfLineAndModifySelection:");
    "@\UF703" = ("moveWordForward:", "moveWordForward:", "moveWordBackward:");
    "@$\UF703" = ("moveWordForwardAndModifySelection:", "moveWordForwardAndModifySelection:", "moveWordBackwardAndModifySelection:");    
    "~\UF703" = ("moveToEndOfLine:");
    "~$\UF703" = ("moveToEndOfLineAndModifySelection:");
}

Я пробовал это раньше, но это не сработало для меня, к сожалению. Может я неправильно делаю? Я перешел в папку своей библиотеки, создал папку с именем «KeyBindings» и создал файл textEdit с именем «DefaultKeyBinding» со скопированным и вставленным содержимым. Я также попытался назвать файл «DefaultKeyBinding.dict». У меня M1 Macbook Air с BigSur.

Я думаю, что отступы должны быть табуляцией, а не пробелами. Возможно, когда вы копировали и вставляли, вместо табуляции были вставлены пробелы.

пожалуйста, дополните принятый ответ подсказкой, чтобы отключить привязку клавиш, используемую для переключения пробелов! DefaultKeyBinding.dict ничего не делает, если вы не отключили параметр в «Настройки» -> «Клавиатура» -> «Управление полетом» -> «Переместить влево/вправо на пробел».

Проверьте это для него: https://superuser.com/questions/657724/how-to-remap-ctrlarrow-keys-to-move-word-to-word-for-mac

@omwASAP, возможно, это тоже поможет вам?

Добро пожаловать в Ask Different. Мы призываем всех редактировать сообщения, если они могут помочь сделать их лучше. Спасибо за дополнение!