Строка дублирования/удаления 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:)

  1. Запустите 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