Исходя из Eclipse и постоянно используемого для дублирования строк, довольно странно выяснять, что Xcode не имеет такой функции. Или это?
Я знаю, что можно изменить системные комбинации клавиш, но это не то, что мне нужно.
Исходя из Eclipse и постоянно используемого для дублирования строк, довольно странно выяснять, что Xcode не имеет такой функции. Или это?
Я знаю, что можно изменить системные комбинации клавиш, но это не то, что мне нужно.
Весь смысл НЕ использовать ярлыки 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
Чтобы удалить строку: Ctrl - A, чтобы перейти к началу строки, затем Ctrl - K, чтобы удалить ее, и еще раз Ctrl - K, чтобы удалить пустую строку. (Я не очень часто использую Xcode, но я привык к этому в Emacs и других текстовых вводах с подобными Emacs привязками и, похоже, работает и в Xcode.)
И дублировать строку: я не знаю многих программ, для которых есть команда, но обычно я просто использую Copy + Paste - в Xcode it CUA-like: Ctrl + A, чтобы перейти к началу строки, Shift + ↓, чтобы выбрать его, Команда + C для копирования и Команда + * V, чтобы вставить дважды (после переопределения строки и после ее добавления).
(от человека, который все время печатает и редактирует текст, так часто в разных программах, и изредка злится на то, чтобы отвлечься от немого виджета, делая небольшую коррекцию в текстовом вводе, что он просто не может избежать вспоминая эти последовательности и привычки)
Удалите строку, подобную 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:
Перезапустите Xcode и откройте Xcode > Настройки > KeyBindings. Найдите свой макрос и определите короткий ключ:
Я попробовал решение привязки ключей, но я не мог заставить его работать. Однако редактирование привязок клавиш XCode работает как шарм. Вот как я это сделал.
Это решение не изменяет содержимое буфера обмена!
Откройте привязку клавиш XCode:
В диалоговом окне "Редактировать скрипты пользователя":
Дубликат строки:
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
Поскольку Xcode 4 затрудняет реализацию с использованием привязок клавиш, я прибегал к использованию Keyboard Maestro (Quickeys тоже должен хорошо работать, но он не полностью совместим с Lion). Например, вот мой ярлык "Ярлык клавиатуры" (привязан к ⌘-⇧-D):
Хорошо, так что у меня это работало некоторое время, а затем внезапно оно сломалось. Теперь я объединился из разных сообщений здесь и нашел решение, которое работает для 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:
)
Я знаю, что этот поток довольно старый, но я нашел другое решение, используя BetterTouchTool, вы можете выполнить Ctrl+A
, Ctrl+K
, Ctrl+K
в одном ярлыке, настраивая таким образом в BTT:
(Используйте добавочную кнопку дополнительных действий для добавления второго и третьего ярлыков)
PS: Переход из Eclipse, где Cmd+D
- строка удаления ^^
Тройной щелчок, чтобы выбрать целую строку, команду-c выбрать и команду-v дважды, чтобы дублировать ее. Это не функция Xcode, это просто часть ОС.
Используйте сценарии пользователя.
Есть скрипты для перемещения и удаления строк. Вы должны определить привязки ключей для этих сценариев (меню Scripts → Edit User Scripts..., в xCode 3.2).
Чтобы дублировать строку, вы должны создать свой собственный script. Но это очень просто! Дублируйте "Move Line Down" script и удалите строку, которая удаляет выделенный текст:
delete (paragraphs startLine through endLine)
Там есть решение для дублирования строк XCode4 над здесь
Я также добавил удаление строки в plist:
<key>Remove Line</key>
<string>selectLine:, deleteBackward:</string>
Не нужно изменять Xcode. Вы можете просто использовать расширение Xcode Linex
Решение damien.flament отлично работает, и вам может потребоваться установить вывод в "Отменить вывод", см. рис. ниже
P.S: Я не знаю, как прокомментировать его ответ.
Как было сказано выше, закройте 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
Это возможно, используя BetterTouchTool. CMD + D будет дублировать строку. Создайте новый ярлык следующим образом:
Используйте кнопку Attach Additional Action для добавления второго и третьего ярлыков
Чтобы удалить строку в Xcode 10.1, пожалуйста, следуйте шагам скриншота ниже, чтобы добавить комбинацию клавиш.
Если вы уже настроили привязки клавиш Xcode, вам придется отредактировать файл: ~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys
. Просто добавьте два массива (описанных выше) в словарь Root/text
.
Три шага для удаления текущей строки (см. слишком длинный, но очень быстрый: D)
Cmd + →: перейти к концу строки
Cmd + Delete: удалить для начала строки
Delete: удалить пустую строку
Мы находимся на Xcode 9.0, и привязки клавиш все еще не работают. Вздох.
Я нашел этот смысл очень полезен, поэтому он отправляет его сюда для дальнейшего использования:
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
</dict>
<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>
Для Xcode 6.1 попал в Xcode > Настройки > KeyBindings > Текст И есть "Удалить до конца строки" и назначьте требуемый ключ.
XCodePlus delete line plugin - это XCode, который делает это для вас. Он был предварительно установлен с менеджером пакетов Alcatraz...
Все еще нет встроенного способа дублировать строки, как в Xcode 9. И у пользовательских привязок клавиш, похоже, есть проблемы.
Обновление: Xcode 10.0 beta 6 (10L232m) тоже самое.
Перейдите по этому адресу:
/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, перейдите на вкладку "Привязка клавиш", найдите дублирующую строку (настроенную) и определите для нее короткий ключ, как показано на рисунке ниже