Xcode дублировать / удалить строку

исходя из Eclipse и будучи использованным для дублирования строк все время, довольно странно узнать, что Xcode не имеет такой функции. Или нет?

Я знаю, что можно изменить общесистемные привязки клавиш, но это не то, что мне нужно.

20 ответов


весь смысл не использовать 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-in Xcode это 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:

enter image description here

перезапустите Xcode и откройте Xcode > настройки > привязки клавиш. Найдите свой макрос и определите короткую клавишу:

enter image description here


я попробовал ключ привязки, но я не мог заставить его работать. Однако редактирование Привязок ключей XCode работает как шарм. Вот как я это сделал.

это решение не изменяет содержимое буфера обмена!

откройте привязки ключей XCode:

alt text

в диалоговом окне редактировать пользовательские скрипты:

  1. дублируйте сценарий "переместить строку вниз" и переименуйте его
  2. дублировать "переместить линию вниз.scpt " файл, переименовать скрипт, выберите файл через (двойной щелчок) в Редакторе скриптов
  3. отредактируйте сценарий (открывает "AppleScript Editor") и удалите "удалить (абзацы startLine через endLine)" пассаж.
  4. если вы не хотите перезапускать XCode, вам, похоже, придется удалить и повторно добавить скрипт. Убедитесь, что для параметра "Output" установлено значение "Discard Output", иначе в исходном файле
  5. я слегка изменил скрипты немного больше, чтобы были выбраны правильные строки:

Повторяющиеся Строки:

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


поскольку Xcode 4 затрудняет реализацию с помощью Привязок клавиш, я прибегнул к использованию Клавиатура Maestro (Quickeys должен работать хорошо, но он не полностью совместим с Lion). Например, вот моя комбинация клавиш Maestro (привязанная к ⌘- ⇧ - D):

http://bit.ly/thC6yf


хорошо, так что я работал некоторое время, а затем внезапно сломался. Теперь я объединил из разных сообщений здесь и нашел решение, которое работает для XCode 6.3.1.

  1. на /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/ с помощью Finder.

  2. находим папку с именем Resources. Щелкните его правой кнопкой мыши, нажмите Get Info, разблокируйте параметр sharing & permissions (нажав на блокировку) и установите его для чтения и записи для всех.

  3. введите папку и найдите файл IDETextKeyBindingSet.файл plist. Щелкните его правой кнопкой мыши, нажмите Get Info, разблокируйте параметр sharing & permissions (нажав на блокировку) и установите его для чтения и записи для всех.

  4. откройте файл с помощью XCode (по умолчанию)

  5. найти удаления, щелкните правой кнопкой мыши и добавьте новую строку. Назовите его, например, удалить строку. В поле Значение введите: selectLine:, deleteBackward: . (Это также можно сделать для повторяющейся строки: selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:)

  1. запустите XCode, перейдите в настройки / привязки клавиш и найдите строку удаления. Установить ярлык. Наслаждаться.

трижды щелкните, чтобы выбрать всю строку, command-c, чтобы выбрать и command-v дважды, чтобы дублировать его. Это не функция Xcode, это просто часть ОС.


Я знаю, что этот поток довольно старый, но я нашел другое решение, используя BetterTouchTool, вы сможете выполнить Ctrl+A, Ctrl+K, Ctrl+K последовательность в одном ярлыке, настроив это в BTT:

enter image description here

(используйте кнопку Прикрепить дополнительные действия, чтобы добавить второй и третий ярлык)

PS: из затмения, где Cmd+D удалить строки ^^


использовать пользовательские скрипты.

есть скрипты для перемещения и удаления строк. Вы должны определить привязки клавиш для этих скриптов (menu Скрипты ->Редактировать Пользовательские Скрипты..., под xCode 3.2).

чтобы дублировать строку, вы должны создать свой собственный скрипт. Но это очень просто ! Дублируйте сценарий" переместить строку вниз " и удалите строку, которая удаляет выделенный текст:

delete (paragraphs startLine through endLine)

существует решение для дублирования строк XCode4 через здесь

Я также добавил удаление строки в plist:

<key>Remove Line</key> <string>selectLine:, deleteBackward:</string>


нет необходимости изменять Xcode. Вы можете просто использовать расширение Xcode Linex

enter image description here


решение Дэмиен.flament отлично работает, и вам может понадобиться set выход для "сброса вывода" см. рис ниже

Userscripts setting

P. S: Я не знаю, как комментировать его ответ.


как сказано выше, закройте XCode и вставьте следующее в ~/Library/Application Support/Xcode/Key Bindings/ <user>.pbxkeys внутри <dict> на :

    <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 будет дублировать строку. Создайте новый ярлык, как это:

enter image description here

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


Если вы уже настроили привязки ключей Xcode, вам придется отредактировать файл:~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys. Просто добавьте два массива (описанные выше) в Root/text словарь.


три шага для удаления текущей строки (см. Слишком долго, но очень быстро :D)

Cmd + : в конец строки
Cmd + удалить : Удалить для начала строки
удалить : удалить пустые строки


мы в Xcode 9.0 клавиш по-прежнему не работает. Вздох.

нашел в этом суть очень полезно Так перепечатывать его здесь для дальнейшего использования:

  1. открыть /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
  2. добавьте следующий фрагмент XML в этот файл чуть выше нижнего </dict>
  3. перейдите в настройки Xcode - > привязки клавиш - > вкладка текст - > прокрутите, пока не увидите дублирование
  4. нажмите на дубликат текущей строки, добавьте ярлык для это, например. Cmnd+D (разрешить любые дубликаты Привязок)
  5. Открыть 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>


для Xcode 6.1 попал в Xcode > настройки > привязки > текст И есть "удалить до конца строки" и назначить ключ, который вы хотите.


xcodeplus удалить плагин линии, это XCode, который делает это для вас. Он был предварительно установлен с менеджером пакетов Alcatraz...

https://github.com/payliu/XcodePlus


по-прежнему нет встроенного способа дублирования строк, начиная с Xcode 9. И пользовательские привязки ключей, похоже, имеют проблемы.

обновление: Xcode 10.0 beta 6 (10L232m) то же самое.