#xcode8
#xcode8
Вопрос:
До Xcode 8.0 можно было настроить файл IDETextKeyBindingSet.plist. Однако теперь кажется, что изменение этого файла приводит к тому, что Xcode перестает нормально работать (например, перестают работать клавиши со стрелками), и больше не представляется возможным создавать собственные сочетания клавиш.
В Xcode никогда не было ярлыков дублирования и вставки строк. Ранее их можно было добавить в IDETextKeyBindingSet.plist, добавив следующее в нужных местах:
<key>Insert New Line Below</key>
<string>moveToEndOfLine:, insertNewline:</string>
<key>Insert New Line Above</key>
<string>moveUp:, moveToEndOfLine:, insertNewline:</string>
<key>Duplicate Current Line</key>
<string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string>
<key>Delete Current Line</key>
<string>selectLine:, delete:</string>
<string>selectLine:, delete:</string>
Кто-нибудь знает, как добиться того же в Xcode 8.0 или выше?
Интересно, используют ли разработчики в Apple Xcode? А если они проверят StackOverflow? Или им запрещено делать это в соответствии с их трудовыми договорами?
РЕДАКТИРОВАТЬ: в Xcode 9.x, похоже, он снова работает.
РЕДАКТИРОВАТЬ: в Xcode 10.0 он снова сломан.
РЕДАКТИРОВАТЬ: в Xcode 10.1 он по-прежнему не работает, а также частично не работает копирование / вставка, что означает, что он не всегда работает. (Я все еще на High Sierra)
Комментарии:
1. Опубликуйте это на частном форуме Xcode, и, возможно, разработчик Apple ответит на него.
2. @DavidH Этот вопрос не является новым для разработчиков Apple, и в течение многих лет я наблюдаю, что они просто не отвечают на этот вопрос. Мне кажется, что у Apple есть политика, в которой есть функции, которые они не хотят добавлять или в которые они не верят, они просто не отвечают на них. В противном случае все другие IDE, по крайней мере, основные, имеют ярлыки дублирования и удаления строк, но XCode намеренно не включил их и никогда не рассказывал о своей философии. Я не могу представить жизнь разработчика без этих двух критических ярлыков, которые нужны снова и снова при написании кода.
3. Я хочу сказать, что у вас больше шансов, что какой-нибудь знающий человек разместит сообщение там или даже на более старом сервере списков Xcode, чем здесь. ИМХО. Это не повредит и займет всего несколько минут вашего времени. На самом деле, я опубликую это в listserv, поскольку я работаю над этим годами — если я получу ответ, я обновлю эту тему.
4. Здесь та же проблема. Вплоть до Xcode 8 мне приходилось выполнять этот нелепый танец замены IDETextKeyBindingSet.plist каждый раз, когда я обновляю Xcode, просто чтобы получить функциональность дублирующейся строки, которая есть у любой другой IDE в мире, но Apple отказывается добавлять в Xcode. Теперь с XCode 8 это больше не работает. Невероятно раздражает и медленно копировать и вставлять строку кода, когда нужно просто нажать command-D.
5. вы можете принять ответ, чтобы другие знали, что он все еще работает
Ответ №1:
Подтверждено, все еще работает в Xcode 14.1 на macOS Ventura 13.0
-
Открыть
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
-
Добавьте следующие строки в корневой словарь
<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>
</dict>
- перезапустите Xcode
- зайдите в
Key Bindings
настройки и назначьте любой ярлык, который вы хотите, для новых трех команд. Просто найдите ихkey
.
Жаль, что в 21 веке вам все еще приходится вручную добавлять такие базовые ярлыки.
Предостережение
Шаги должны повторяться после каждого обновления Xcode.
Комментарии:
1. спасибо за обновление. Я проверю это в ближайшее время. Какую версию ОС вы используете. Я нахожусь на El Capitan.
2. Я на macOS Sierra 10.12.2
3. К сожалению, у меня это не работает. У меня есть xCode 8.2.1 и Sierra 10.12.3
4. Я подтверждаю, что он работает для меня в Xcode 8 на Mac ElCapitan
5. Обновление XCode до версии 8.3.1 и macOS до 10.12.4 вернуло значение по умолчанию idetextkeybindingset.plist. Необходимо повторно добавить вышеуказанные строки в файл и перезапустить XCode.
Ответ №2:
Приведенный выше ответ, похоже, нарушен в Xcode 9.
Вот еще одно решение, которое, как я проверил, работает в Xcode 9 GM:
<key>Custom Commands</key>
<dict>
<key>Duplicate Current Line</key>
<string>moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, moveToBeginningOfLine:, yank:</string>
</dict>
Ответ №3:
В предыдущем ответе были оставлены ошибочные пробелы, когда я попробовал это. Это работает для меня в Xcode 9:
selectLine:, copy:, moveToBeginningOfLine:, paste:, moveToEndOfLine: