Строка дублирования/удаления Xcode
Исходя из Eclipse и постоянно используемого для дублирования строк, довольно странно выяснять, что Xcode не имеет такой функции. Или это?
Я знаю, что можно изменить системные комбинации клавиш, но это не то, что мне нужно.
Ответы
Ответ 1
Весь смысл НЕ использовать ярлыки Cmd-C
/Cmd-V
. У меня такая же проблема, что и IntelliJ, и возможность просто дублировать строки с помощью Cmd-D
и удалять их с помощью Cmd-Y
- это большая экономия времени.
С тех пор это меня беспокоило. Однако похоже, что кто-то нашел решение, которое работает.
Короче, создайте файл ~/Library/KeyBindings/PBKeyBinding.dict
со следующим содержимым и перезапустите Xcode.
{
"^$K" = (
"selectLine:",
"cut:"
);
"^$D" = (
"selectLine:",
"copy:",
"moveToEndOfLine:",
"insertNewline:",
"paste:",
"deleteBackward:"
);
}
Это приведет к созданию двух ярлыков: Ctrl - Shift - K для удаления текущей строки и Ctrl - Shift - D для дублирования текущей строки. Обратите внимание, что это будет только, если вы НЕ, используя специальную привязку клавиш, установленную в Xcode. Переключитесь на "XCode Default", и все должно работать. Протестировано на XCode 3.2 на Snow Leopard.
Дополнительная информация о привязках клавиш Mac OS X: http://funkworks.blogspot.it/2013/03/republishing-of-wwwerasetotheleftcompos.html
Ответ 2
Чтобы удалить строку: Ctrl - A, чтобы перейти к началу строки, затем Ctrl - K, чтобы удалить ее, и еще раз Ctrl - K, чтобы удалить пустую строку. (Я не очень часто использую Xcode, но я привык к этому в Emacs и других текстовых вводах с подобными Emacs привязками и, похоже, работает и в Xcode.)
И дублировать строку: я не знаю многих программ, для которых есть команда, но обычно я просто использую Copy + Paste - в Xcode it CUA-like: Ctrl + A, чтобы перейти к началу строки, Shift + ↓, чтобы выбрать его, Команда + C для копирования и Команда + * V, чтобы вставить дважды (после переопределения строки и после ее добавления).
(от человека, который все время печатает и редактирует текст, так часто в разных программах, и изредка злится на то, чтобы отвлечься от немого виджета, делая небольшую коррекцию в текстовом вводе, что он просто не может избежать вспоминая эти последовательности и привычки)
Ответ 3
Удалите строку, подобную eclipse CTRL + D (проверена на Xcode 4.5.1):
Прежде всего, измените эти права:
sudo chmod 666 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist
sudo chmod 777 /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/
Откройте /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist
с самим Xcode и добавьте эту новую запись:
deleteToBeginningOfLine:, moveToEndOfLine:, deleteToBeginningOfLine:, deleteBackward:, moveDown:, moveToBeginningOfLine:
![enter image description here]()
Перезапустите Xcode и откройте Xcode > Настройки > KeyBindings. Найдите свой макрос и определите короткий ключ:
![enter image description here]()
Ответ 4
Я попробовал решение привязки ключей, но я не мог заставить его работать. Однако редактирование привязок клавиш XCode работает как шарм. Вот как я это сделал.
Это решение не изменяет содержимое буфера обмена!
Откройте привязку клавиш XCode:
![alt text]()
В диалоговом окне "Редактировать скрипты пользователя":
- Дублируйте "Move Line Down" script и переименуйте его
- Дублируйте файл "Move Line Down.scpt", переименуйте script, выберите файл с помощью (двойной щелчок) в script Редактор
- Отредактируйте script (открывает "Редактор AppleScript" ) и удалите фрагмент "delete (paragraph startLine through endLine)".
- Если вы не хотите перезапускать XCode, вам, похоже, нужно удалить и повторно добавить script. Убедитесь, что для параметра "Выход" установлено значение "Отменить вывод", иначе у вас будет "(null)" в исходном файле
- Я немного изменил скрипты немного больше, чтобы выбрать правильные строки:
Дубликат строки:
using terms from application "Xcode"
tell first text document
set {startLine, endLine} to selected paragraph range
if startLine > 1 then
set theText to (paragraphs startLine through endLine)
set theText to (theText as string)
make new paragraph at beginning of paragraph (startLine) with data theText
set selected paragraph range to {endLine + 1, endLine + endLine - startLine + 1}
else
beep 1
end if
end tell
end using terms from
Дубликат строки вниз:
using terms from application "Xcode"
tell first text document
set {startLine, endLine} to selected paragraph range
if endLine < (count paragraphs) then
set theText to (paragraphs startLine through endLine)
set theText to (theText as string)
(* delete (paragraphs startLine through endLine) *)
make new paragraph at beginning of paragraph (endLine + 1) with data theText
set selected paragraph range to {startLine, endLine}
else
beep 1
end if
end tell
end using terms from
![alt text]()
Ответ 5
Поскольку Xcode 4 затрудняет реализацию с использованием привязок клавиш, я прибегал к использованию Keyboard Maestro (Quickeys тоже должен хорошо работать, но он не полностью совместим с Lion). Например, вот мой ярлык "Ярлык клавиатуры" (привязан к ⌘-⇧-D):
http://bit.ly/thC6yf
Ответ 6
Хорошо, так что у меня это работало некоторое время, а затем внезапно оно сломалось. Теперь я объединился из разных сообщений здесь и нашел решение, которое работает для XCode 6.3.1.
-
Перейдите к /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/
с помощью Finder.
-
найдите папку с именем Ресурсы. Щелкните правой кнопкой мыши по нему, нажмите "Получить информацию", откройте настройку общего доступа и разрешений (нажав кнопку блокировки) и установите для них "Чтение и запись" для всех.
-
Введите папку и найдите файл IDETextKeyBindingSet.plist. Щелкните правой кнопкой мыши по нему, нажмите "Получить информацию", откройте настройку общего доступа и разрешений (нажав кнопку блокировки) и установите для них "Чтение и запись" для всех.
-
Откройте файл с помощью XCode (по умолчанию)
-
Найдите удаления, щелкните правой кнопкой мыши и добавьте новую строку. Назовите его, например, Delete Line. В поле значения введите: selectLine:, deleteBackward:
. (Это также можно сделать для дублированной строки: selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:
)
![]()
- Запустите XCode, перейдите в настройки/привязки клавиш и найдите Delete Line. Установите ярлык. Наслаждайтесь.
Ответ 7
Я знаю, что этот поток довольно старый, но я нашел другое решение, используя BetterTouchTool, вы можете выполнить Ctrl+A
, Ctrl+K
, Ctrl+K
в одном ярлыке, настраивая таким образом в BTT:
![enter image description here]()
(Используйте добавочную кнопку дополнительных действий для добавления второго и третьего ярлыков)
PS: Переход из Eclipse, где Cmd+D
- строка удаления ^^
Ответ 8
Тройной щелчок, чтобы выбрать целую строку, команду-c выбрать и команду-v дважды, чтобы дублировать ее. Это не функция Xcode, это просто часть ОС.
Ответ 9
Используйте сценарии пользователя.
Есть скрипты для перемещения и удаления строк. Вы должны определить привязки ключей для этих сценариев (меню Scripts → Edit User Scripts..., в xCode 3.2).
Чтобы дублировать строку, вы должны создать свой собственный script. Но это очень просто! Дублируйте "Move Line Down" script и удалите строку, которая удаляет выделенный текст:
delete (paragraphs startLine through endLine)
Ответ 10
Там есть решение для дублирования строк XCode4 над здесь
Я также добавил удаление строки в plist:
<key>Remove Line</key>
<string>selectLine:, deleteBackward:</string>
Ответ 11
Не нужно изменять Xcode. Вы можете просто использовать расширение Xcode Linex
![введите описание изображения здесь]()
Ответ 12
Решение damien.flament отлично работает, и вам может потребоваться установить вывод в "Отменить вывод", см. рис. ниже
![Userscripts setting]()
P.S: Я не знаю, как прокомментировать его ответ.
Ответ 13
Как было сказано выше, закройте XCode и вставьте в ~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeys
внутри <dict>
в <key>text</key>
раздел <<20 > :
<key>^D</key>
<array>
<string>moveToLeftEndOfLine:</string>
<string>deleteToEndOfLine:</string>
</array>
<key>^K</key>
<array>
<string>selectLine:</string>
<string>copy:</string>
<string>moveToEndOfLine:</string>
<string>insertNewline:</string>
<string>paste:</string>
<string>deleteBackward:</string>
</array>
Запустите XCode и наслаждайтесь CTRL - SHIFT - D и CTRL - SHIFT - K.
Если вы хотите CTRL - D и CTRL - K, используйте ^d
и ^k
в определениях ключей. Убедитесь, что в файле нет дублирующих привязок клавиш.
Работает отлично для меня с XCode 3.2
Ответ 14
Это возможно, используя BetterTouchTool.
CMD + D будет дублировать строку.
Создайте новый ярлык следующим образом:
![введите описание изображения здесь]()
Используйте кнопку Attach Additional Action для добавления второго и третьего ярлыков
Ответ 15
Чтобы удалить строку в Xcode 10.1, пожалуйста, следуйте шагам скриншота ниже, чтобы добавить комбинацию клавиш.
![enter image description here]()
Ответ 16
Если вы уже настроили привязки клавиш Xcode, вам придется отредактировать файл: ~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys
. Просто добавьте два массива (описанных выше) в словарь Root/text
.
Ответ 17
Три шага для удаления текущей строки (см. слишком длинный, но очень быстрый: D)
Cmd + →: перейти к концу строки
Cmd + Delete: удалить для начала строки
Delete: удалить пустую строку
Ответ 18
Мы находимся на Xcode 9.0, и привязки клавиш все еще не работают. Вздох.
Я нашел этот смысл очень полезен, поэтому он отправляет его сюда для дальнейшего использования:
- Открыть
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
- Добавьте следующий XML-фрагмент к этому файлу чуть ниже
</dict>
- Перейдите к настройкам Xcode → Связывание клавиш → вкладка "Текст" → "Прокрутка" до "Дублирование"
- Нажмите "Дублировать текущую строку", добавьте для него ярлык, например. Cmnd + D (разрешить любые дубликаты привязок)
- Открыть Xcode
<key>Duplication</key>
<dict>
<key>Duplicate Current Line</key>
<string>moveToBeginningOfLine:, deleteToEndOfLine:, yank:, insertNewline:, moveToBeginningOfLine:, yank:</string>
<key>Duplicate Lines</key>
<string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, paste:, deleteBackward:</string>
<key>Delete Line</key>
<string>selectLine:, deleteBackward:</string>
</dict>
Ответ 19
Для Xcode 6.1 попал в Xcode > Настройки > KeyBindings > Текст
И есть "Удалить до конца строки" и назначьте требуемый ключ.
Ответ 20
XCodePlus delete line plugin - это XCode, который делает это для вас. Он был предварительно установлен с менеджером пакетов Alcatraz...
https://github.com/payliu/XcodePlus
Ответ 21
Все еще нет встроенного способа дублировать строки, как в Xcode 9.
И у пользовательских привязок клавиш, похоже, есть проблемы.
Обновление: Xcode 10.0 beta 6 (10L232m) тоже самое.
Ответ 22
Перейдите по этому адресу:
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet
а затем скопируйте файл IDETextKeyBindingSet.plist в какое-то место, а затем откройте скопированный файл и вставьте
selectLine :, copy :, paste :, paste:
нравится эта картина
введите описание изображения здесь
и сохраните его и замените скопированный файл по этому адресу /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet
затем перезапустите xcode, откройте настройки xcode, перейдите на вкладку "Привязка клавиш", найдите дублирующую строку (настроенную) и определите для нее короткий ключ, как показано на рисунке ниже
[1]: https://i.stack.imgur.com/UTeZu.png