Строка дублирования / удаления Xcode


128

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

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



эта установка работает для 9.2 stackoverflow.com/a/34195483/1348522
Зумри Мохамед

Ответы:


91

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


5
Это должен быть настоящий ответ. Кстати - если вы хотите импортировать ярлык cmd-d (удалить строку) из Eclipse, вам нужно сначала изменить ярлык «Добавить закладку» в меню редактирования в XCode
Крис Р.

@joshperry, что-нибудь, что работает с Xcode 4+? Команда Duplicate(in Edit -> Duplicate) кажется «всегда» неактивной (и не предназначена для дублирования строки).
Blaz

Я использую OS X с первого дня и никогда не знал о привязках клавиш. какая классная функция. Взгляните на этот очень красивый редактор привязок клавиш графического интерфейса, с которым я столкнулся .
Alex Grey

Нашел дополнительную информацию на сайте разработчиков Apple .
aleclarson

звучало отлично, но похоже, что это не сработало для меня в Xcode 5.0.2 :(
voghDev 06

105

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

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

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


3
Это будет работать во всех приложениях, использующих какао для ввода текста, поскольку это функция текстовой системы какао. Есть еще много таких ярлыков, их список можно найти здесь: hcs.harvard.edu/~jrus/Site/System%20Bindings.html :)
Ахти

2
'yank' должен быть ctrl + Y на современных Mac.
CarmeloS

Command-V, чтобы вставить его и изменить отступ. Control -Y также вставит, но не изменит отступ вставленного текста.
Скотт Гарднер

77

Удалите строку типа 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. Найдите свой макрос и определите комбинацию клавиш:

введите описание изображения здесь


5
Если вы хотите добавить способ дублирования строки, сделайте то же самое, но при вставке нового значения в файл IDETextKeyBindingSet.plist вставьте этот код «selectLine :, copy :, moveToEndOfLine :, insertNewline :, paste :, deleteBackward: ».
jollyr0ger

+1 Это решение работало, но в Xcode 4.6.1 ^ D противоречило другим существующим привязкам клавиш.
bernardn

Как вы можете получить это для «Дублировать текущую строку»?
Маркус

Это не работает в xcode 6. Из списка вызывается только первая функция
Mrug

1
Мне это нравится, работает для меня как шарм под XCode 6.3.1.
fwielstra

9

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

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

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

альтернативный текст

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

  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

альтернативный текст


2
Выше явно не упомянуто, существуют сценарии для удаления строки, перемещения строки вверх и перемещения строки вниз. У принятого ответа есть недостаток, заключающийся в том, что он работает только в том случае, если для ваших сочетаний клавиш установлено значение XCode Default. Использование скриптов позволяет вам сохранять свои индивидуальные сочетания клавиш, поскольку сочетания клавиш для скриптов обрабатываются отдельно от таковых для остальной части XCode.
Pathogen

7

Хорошо, у меня это работало какое-то время, а потом внезапно сломалось. Теперь я объединил здесь разные сообщения и нашел решение, которое работает для 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, перейдите в настройки / привязки клавиш и найдите Delete Line. Установить ярлык. Наслаждаться.

6

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

http://bit.ly/thC6yf


3
«Купи сейчас за 36 долларов» ... что за воровство) лол ... пока я не увидел это на сайте Maestro, я подумал, что это может быть хорошим решением
ycomp


5

Чтобы удалить строку в Xcode 10.1, следуйте инструкциям на снимке экрана ниже, чтобы добавить горячую клавишу.

введите описание изображения здесь


5

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

введите описание изображения здесь

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

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


4

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


2
Щелчок мышкой и еще хуже, тройной? Это определенно не то решение, которое ищут люди, желающие использовать сочетания клавиш.
Ixx 01

4

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

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

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

delete (paragraphs startLine through endLine)

3

Там это решение для дублирования XCode4 линии над здесь

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

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


3

Мы используем 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>



2

Решение от damien.flament отлично работает, и вам может потребоваться установить для вывода значение «Отменить вывод», см. Рис. Ниже.

Настройка пользовательских скриптов

PS: Не знаю, как прокомментировать его ответ.


2

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

    <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


2

Это возможно с помощью BetterTouchTool . CMD + D дублирует строку. Создайте новый ярлык, например:

введите описание изображения здесь

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


1

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


Хия. Я не совсем понимаю это, документ pbxkey - это XML, тогда как файл ~ / Library / KeyBindings / PBKeyBinding.dict, описанный выше, представляет собой полностью другой формат (немного похож на JSON). В документе pbxkeys нет записи Root / text. Это потому, что я использую более позднюю версию?
Бен Клейтон,

1

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

Cmd+ : перейти в конец строки
Cmd+ Delete: удалить в начало строки
Delete: удалить пустую строку


0

Для Xcode 6.1 перешел в Xcode> Preferences> KeyBindings> Text И есть «Удалить до конца строки» и назначить желаемый ключ.



0

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

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


0

Перейдите по этому адресу:

/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


Из обзора: Привет, этот пост, похоже, не дает качественного ответа на вопрос. Пожалуйста, либо отредактируйте свой ответ и улучшите его, либо просто опубликуйте его как комментарий.
sɐunıɔ ןɐ qɐp
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.