Xcode: удалить горячую клавишу

Я ищу способ сопоставить некоторые горячие клавиши, чтобы "удалить строку, в которой мой курсор включен" в Xcode. Я нашел "удалить до конца строки" и "удалить в начало строки" в привязке текстовых клавиш, но мне не хватает того, как полностью удалить строку независимо от того, что я выбрал. TextMate имеет эту функциональность, сопоставленную с Ctrl + Shift + D, и мне хотелось бы, если возможно, одно и то же. Любые идеи?

Ответ 1

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

Чтобы сделать то, что вы хотите, вам должно понравиться следующее:

В вашей домашней папке Library/KeyBindings/DefaultKeyBinding.dict

{
    "^D" = (
        "moveToBeginningOfLine:",
        "deleteToEndOfLine:",
    );
}

Я считаю, что если вы хотите, чтобы это было применимо к Xcode, вы можете назвать файл PBKeyBinding.dict вместо этого, но я не пробовал это сам. Вы можете узнать больше об этой системе здесь и здесь.

Ответ 2

Спасибо за помощь, Эшли. После некоторых экспериментов я отобразил мои любимые команды TextMate (дублировать строку, удалить строку). Я создал файл ~/Library/KeyBindings/PBKeyBinding.dict и добавил следующее:

{
    "^$K" = (
        "selectLine:",
        "cut:"
    );
    "^$D" = (
        "selectLine:",
        "copy:",
        "moveToEndOfLine:",
        "insertNewline:",
        "paste:"
    );
}

Добавленный "deleteBackward:" выполняет резервное копирование одной строки после удаления содержимого строки. Возможно, вы просто можете использовать "selectLine:".

Ответ 3

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

Xcode использует некоторые подмножества команд emacs. Я использую этот подход для быстрого удаления строки. ^ k (control-k) удаляет курсор в конец строки. Выполнение этого дважды также удаляет возврат каретки и занимает следующую строку. ^ a приведет вас к началу строки.

Итак, чтобы удалить полную строку с самого начала, вы можете использовать ^ a ^ k ^ k.

Ответ 4

Я искал решение для этого, и я попробовал Ashley Clark, но оказалось, что есть более простой вариант с помощью включенного User Script, называемого delete Line.

  • Откройте странное меню слева от "справки", которое выглядит как свиток.
  • Выберите "Редактировать пользовательские скрипты..."
  • Перейдите на вкладку "Вкладки клавиш"
  • Развернуть раздел "Текст"
  • Дважды щелкните столбец ⌘ рядом с "Удалить строку" и введите свою горячую клавишу. Он может предупредить вас, что вы украли его из какой-либо другой команды, но это прекрасно.

Готово! Вы можете сделать то же самое для Move Line Up и Move Line Down, если вы похожий на Eclipse, как я.

Ответ 5

<key>Custom Keyword Set</key>
<dict>
 <key>Delete Current Line In One Hit</key>
     <string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>
</dict>

Я предлагаю создать ваш настраиваемый диктар в вашем файле IDETextKeyBindingSet.plist.

Итак:

  • закрыть Xcode;
  • открыть терминал;
  • sudo nano/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist
  • добавить новый пользовательский раздел, например, код сверху;
  • сохранить, выйти и открыть Xcode;
  • [Xcode > Настройки > привязка клавиш]
  • найдите "Удалить.." и создайте новый ярлык.

Ответ 6

Это работает для меня (Xcode 4.4.1):

Те же шаги, что описаны здесь: Дублированная строка Xcode (Галлейный ответ)

Но вместо:

selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:

Использование:

selectLine:, moveToBeginningOfLine:, deleteToEndOfLine:

Ответ 7

Если у вас возникли проблемы с современным решением Xcode (которое я было) для этого в Xcode 7.2, это сделать то, что Opena упомянуто здесь со скриншотами или в текстовой форме через ответ Velthune. Поскольку мне нужна более простая команда, я упростил команду:

selectLine:, delete:, moveToBeginningOfLine:

Конечно, в настройках Xcode Preferences → Key Bindings вы можете просто найти команду дважды щелкнуть по столбцу Key и дать ей собственную привязку Ctrl + Shift + D.

Вот скриншот того, что у меня получилось

Ответ 8

Для Xcode 9.0 (beta), вставляя подгонянный ключевой словарь в IDETextKeyBindingSet.plist, работающий отлично для меня. Вам нужно перезапустить XCode, если он уже открыт, и после следующего запуска вы найдете новые настраиваемые ярлыки в меню KeyBindings.

<key>Customized</key>
<dict>
    <key>Delete Rest Of Line</key>
    <string>deleteToEndOfLine:</string>
    <key>Delete Line</key>
    <string>moveToBeginningOfLine:, deleteToEndOfLine:</string>
    <key>Duplicate Current Line</key>
    <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, moveToBeginningOfLine:, paste:</string>
</dict>