Дублирование и удаление строки Xcode 9.x

Вплоть до 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? А если они проверят Кару? Или им запрещено делать это по трудовым договорам?

ОБНОВЛЕНИЕ: В Xcode 9.x, похоже, снова работает.

ОБНОВЛЕНИЕ: В Xcode 10.0 он снова сломан.

ОБНОВЛЕНИЕ: В Xcode 10.1 он по-прежнему не работает, а также копирование/вставка частично не работает, то есть это не всегда работает. (Я все еще на Высшей Сьерре)

Ответ 1

Подтверждено, все еще работает в Xcode 10.3 на macOS Mojave 10.14.6

  1. открыть /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist

  2. Добавьте следующие строки в корневой словарь

    <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>
  1. перезапустите Xcode
  2. зайдите в настройки Key Bindings и назначьте любой ярлык для трех новых команд. Просто найдите их key.

Жаль, что в 21-м веке вам все еще приходится вручную добавлять такие основные ярлыки.

Протест

Шаги должны повторяться после каждого обновления 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: