Как создать ярлык "Удалить линию" в 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
попробуйте следующее:
![введите описание изображения здесь]()
Ответ 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.
Ответ 12
Простое решение для XCode 5 и 6:
Установите alcatraz: http://alcatraz.io/, затем используйте его для установки XCodePlus удалить строку "плагин:
Window > Package manager
Есть множество других удивительных плагинов.
Ответ 13
Сначала откройте Xcode- > Настройки
Выберите Key Bindigs
Затем выполните поиск Удалить
Измените Удалить конец строки на свой ярлык (я предпочитаю CMD + D)
Thats All ![Вот скриншот]()