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


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

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

20 117

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 редактор") и удалить "удалить (пункты составом на основе конечных)" прохождение.
  4. если вы не хотите перезапускать XCode, вам, похоже, придется удалить и повторно добавить скрипт. Убедитесь, что для параметра "Output" установлено значение "Discard Output", иначе в исходном файле будет указано значение "(null)"
  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 делает это трудно реализовать с помощью привязки клавиш, я прибегал к использованию Keyboard Maestro (Quickeys должно работать хорошо тоже, но это не полностью совместимый Лев). Например, вот мой ярлык Keyboard Maestro (привязанный к ⌘- ⇧ - D):

http://bit.ly/thC6yf

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

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

  2. находим папку с именем Resources. Щелкните его правой кнопкой мыши, нажмите "Получить информацию", разблокируйте параметр "общий доступ и разрешения" (нажав кнопку "блокировка") и установите его для чтения и записи для всех.

  3. войдите в папку и найдите файл IDETextKeyBindingSet.файл plist. Щелкните его правой кнопкой мыши, нажмите "Получить информацию", разблокируйте параметр "общий доступ и разрешения" (нажав кнопку "блокировка") и установите его для чтения и записи для всех.

  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 удалить строки ^^

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

есть скрипты для перемещения и удаления строк еще. Вы должны определить привязки клавиш для этих сценариев (меню Скрипты -> Редактировать Пользовательские Скрипты..., под 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 delete line plugin, это XCode, который делает это для вас. Он был предварительно установлен с менеджером пакетов Alcatraz...

https://github.com/payliu/XcodePlus

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

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