Xcode дубликат / удаление строки - PullRequest
120 голосов
/ 15 февраля 2009

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

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

Ответы [ 21 ]

99 голосов
/ 15 февраля 2009

Для удаления строки : Ctrl - A для перехода в начало строки, затем Ctrl - K , чтобы удалить его, и в другой раз Ctrl - K , чтобы удалить пустую строку. (Я не очень часто использую XCode, но я привык к этому в Emacs и других текстовых вводах с привязками, подобными Emacs, и, похоже, он работает и в XCode.)

И для дублирования строки : я не знаю многих программ, которые имеют команду для этого, но обычно я просто использую Copy + Paste - в Xcode это похоже на CUA: Ctrl + A , чтобы перейти к началу строки, Shift + , чтобы выбрать его , Команда + C для копирования и Команда + * V для вставки дважды (один раз заменив строку и добавив к ней).

(от человека, который все время печатает и редактирует текст, так часто в разных программах, и иногда раздражается, что ему приходится отвлекаться на тупой виджет, делая небольшие исправления при вводе текста, чего он просто не может избежать помня эти последовательности и привычки)

90 голосов
/ 04 октября 2009

Весь смысл НЕ в том, чтобы использовать ярлыки 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

75 голосов
/ 24 октября 2012

Удалить строку, например, затмение 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

9 голосов
/ 27 октября 2010

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

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

Откройте привязки клавиш XCode:

alt text

В диалоге редактирования пользовательских сценариев:

  1. Дублируйте скрипт "Move Line Down" и переименуйте его
  2. Дублируйте файл "Move Line Down.scpt", переименуйте скрипт, выберите файл с помощью (двойного щелчка) в Редакторе скриптов
  3. Отредактируйте сценарий (открывает «Редактор AppleScript») и удалите фрагмент «удалить (абзацы startLine через endLine)».
  4. Если вы не хотите перезапускать XCode, вам, похоже, придется удалить и повторно добавить скрипт. Убедитесь, что для параметра «Вывод» установлено значение «Отменить вывод», в противном случае в исходном файле будет «(ноль)»
  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

6 голосов
/ 20 ноября 2011

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

http://bit.ly/thC6yf

6 голосов
/ 21 мая 2015

ОК, так что я какое-то время работал, а потом вдруг сломался. Теперь я объединил из разных постов здесь и нашел решение, которое работает для 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, перейдите в настройки / сочетания клавиш и найдите «Удалить строку». Установить ярлык. Наслаждайтесь.
5 голосов
/ 19 февраля 2015

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

enter image description here

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

PS: Исходя из Eclipse, где Cmd+D - строка удаления ^^

4 голосов
/ 22 августа 2010

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

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

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

delete (paragraphs startLine through endLine)
4 голосов
/ 15 февраля 2009

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

3 голосов
/ 27 апреля 2012

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

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

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

...