Как создать ярлык "Удалить линию" в Xcode 8? Решения Xcode 3 больше не работают

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

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

Xcode duplicate/delete line

http://bigdiver.wordpress.com/2009/09/11/configure-homeend-key-bidings-on-mac-os-x/

http://www.betadesigns.co.uk/Blog/2010/02/03/custom-xcode-shortcuts/

Все решения включают в себя изменение одного из этих файлов:

~/Library/Поддержка приложений /Xcode/Key Bindings/*. pbxkeys
~/Library/сочетания клавиш /DefaultKeyBinding.dict
~/Library/сочетания клавиш /PBKeyBinding.dict

Хорошим ресурсом для существующих ярлыков в Xcode 4 является http://cocoasamurai.blogspot.com/2011/03/xcode-4-keyboard-shortcuts-now.html. Многие из них перечислены в отношении удаления, но для "удалить строку" нет ни одного.

НО, эти решения выполняют НЕ работу с Xcode 4.

Обновление: Проблема остается такой же, как у Xcode 5.1.1

Обновление: Проблема остается такой же, как и у Xcode 6.1 GM Seed 2

Обновление: Все еще применяется к версии Xcode 7.3 (7D175) от 26 апреля 2016 года.

Обновление: Шесть лет спустя Xcode 8.3 имеет встроенное решение. См. Ответ ниже.

Ответ 1

Похоже, Xcode 8.3 добавил команду Удалить строку:)

По умолчанию для него не назначается сочетание клавиш, поэтому вам нужно добавить его самостоятельно:

  • Открыть Xcode > Настройки > привязки клавиш
  • Искать Delete Line
  • Добавить комбинацию клавиш в столбце Key

привязки клавиш Xcode

Ответ 2

После большого поиска здесь и там я пришел к следующему решению:

Нажмите и удерживайте клавишу control, а затем нажмите A K K.

(Примечание: второй K удаляет пустую строку).

На самом деле это комбинация из двух команд: Move to Beginning of Paragraph и Delete to End of Paragraph. Вы также можете использовать/установить другие клавиши, а также использовать/установить/изменить привязки клавиш для других команд (ов), например. Move to Beginning of Line и Delete to End of Line. Я использовал указанные выше (по умолчанию) привязки клавиш, поскольку они мне подходили.

Edit:

Чтобы удалить несколько строк подряд, сначала нажмите и удерживайте клавишу control, а затем нажмите A (просто для перехода к началу абзаца/строки), затем нажмите и удерживайте K, пока все строки не будут удалены (это будет работать, поскольку курсор остается в начале).

Просто для упрощения задачи (для меня) я установил command D для Delete to End of Paragraph и home/end, чтобы перейти к началу/концу абзаца.

Ответ 3

Получил! Это работает в XCode с 4.3 по 4.5 и не требует дополнительных приложений и специфичен для XCode.

Это решение в основном совпадает с командой Duplicate Line, описанной здесь:

Редактировать файл plist

Он в /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist

Обратите внимание, что:

  • связанный ответ предполагает использование XCode для этого, но я нахожу, что это приводит к сбою XCode
  • этот путь для Lion - он может отличаться для других версий ОС
  • вам может потребоваться sudo или изменить разрешения для редактирования этого файла.
  • закрыть XCode перед редактированием

Добавить новый элемент <dict>

Добавьте этот текст только ВЫШЕ конец закрытия <dict> в нижней части этого файла

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

Обратите внимание, что:

  • Это находится внутри существующего <dict>, поэтому после <
  • </dict></plist>
  • Это связывает именованное действие "Удалить текущую строку в одном ударе" с тремя ключевыми действиями в строке. Я играл с различными вариантами здесь, чтобы получить правильную комбинацию. Например, если вы попробуете moveToBeginningOfLine, deleteToEndOfLine вместо наоборот, то использование его на пустых строках удалит строку и всю следующую строку. Что неприятно

Сохраните это и откройте XCode

Добавить новую привязку клавиш в XCode

Смотрите скриншоты для этого в связанном ответе или выполните следующее:

  • Открыть настройки XCode
  • Выбрать привязки клавиш
  • Нажмите "Все"
  • В поле SEarch введите "Удалить" и найдите "Удалить текущую линию в одном месте"
  • Добавьте новое связывание.

Это должно сделать это, но для одного оговорки. Я никогда не смог заставить XCode сохранить новую привязку. Та же проблема описывается здесь, хотя у меня было небольшое изменение:

  • Создайте дубликат привязок по умолчанию (нажмите кнопку + в левом нижнем углу окна Bindings и создайте дубликат)
  • Установите новое связывание в дубликат
  • Закройте диалоговое окно настроек (это изменение!)
  • Откройте настройки снова и создайте новый дубликат старого дубликата и удалите старый дубликат.

Какая буря, а? Но это работает. Теперь у меня есть Ctrl + D, чтобы удалить всю текущую строку в XCode 4.3 на Lion.

Ответ 4

Я нашел временное обходное решение для Xcode 9.

Откройте Xcode/Content/Frameworks/IDEKit.framework/Resources/IDETextK eyBindingSet.plist и добавьте строки ниже.

Он имитирует действие, которое происходит в Xcode 8 с ограниченной поддержкой. Он может удалить только одну строку, но я как-то доволен. Надеюсь, это скоро будет исправлено.

<key>Customized</key>
<dict>
    <key>Delete Line</key>
    <string>moveToBeginningOfLine:, deleteToEndOfLine:, moveDown:, deleteBackward:</string>
</dict>

После перезапуска Xcode вы можете увидеть настраиваемый элемент в Key Bindings, как показано ниже.

введите описание изображения здесь

Привяжите и используйте его!

Edit) Я думаю, что ниже один лучше оригинального.

<string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>

Ответ 5

Я использую BetterTouchTool, это довольно круто:

enter image description here

Ответ 6

Rhubarb ответ правильный и работает, но одна вещь, есть более простая команда в файле plist. Следуйте всем инструкциям Rhubarb, но

вместо

<string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>

используйте ниже

<string>selectLine:, delete:</string>

Это более ясно и отбросить любую возможность сбоя.

Я хочу написать это как комментарий, но моя "репутация" не позволяет мне это делать.

Ответ 7

попробуйте следующее:

  • Сначала откройте Xcode- > Настройки

  • Выберите Key Bindigs

  • search Удалить абзац

  • Измените Удалить абзац на свой ярлык

введите описание изображения здесь

Ответ 8

Если вы являетесь пользователем Maestro Keyboard, просто создайте макрос, который делает следующее:

  • Команда Стрелка влево
  • Стрелка вниз.
  • Удалить

Я назначил его Command-D и сделал его доступным только в Xcode.

Ответ 9

Похоже, что XCode теперь использует файл plist против файла dict, а новый формат не поддерживает добавление нескольких команд в привязку ключей. Также не существует способа добавить пользовательские команды для привязки к ним. Единственный способ, которым я нашел работу: установить привязку клавиш для отдельных действий, например ^D для deleteToEndOfLine:, затем ^L для moveToBeginningOfLine:, предоставив вам ^L+^D, чтобы дать вам комбинированный эффект.

Ответ 10

Если вы не против иметь эту привязку клавиш в других приложениях, вы можете попробовать установить ее в общих привязках клавиш Cocoa. У этого есть объяснение.

Ответ 11

Кажется, что это невозможно сделать сейчас... не стесняйтесь исправить меня, если я ошибаюсь... но вот мое новое решение...

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

найти 2 клавиши, которые смежны и не используются для любых команд, которые вы используете... ";", "'" возможно. (Я не использую команду n для нового файла, поэтому я выбрал n, m)

установите для первого ключа значение "Переместить в" Пробуждение строки ", а второй -" Удалить до конца строки "

затем используйте эту последовательность, чтобы удалить строку...

alternate будет установлено что-то, чтобы выбрать строку, а затем просто используйте delete.

Ответ 13

Сначала откройте Xcode- > Настройки

Выберите Key Bindigs

Затем выполните поиск Удалить

Измените Удалить конец строки на свой ярлык (я предпочитаю CMD + D)

Thats All Вот скриншот