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


128

Виходячи з Eclipse і використовувався для копіювання рядків весь час, досить дивно з'ясувати, що Xcode не має такої функції. Або це?

Я знаю, що можливо змінити системні клавіатурні зв'язки, але це не те, про що я пішов.



ця установка працює на 9.2 stackoverflow.com/a/34195483/1348522
Zumry Mohamed

Відповіді:


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
Це має бути справжньою відповіддю. Btw - якщо ви хочете імпортувати ярлик cmd-d (видалити рядок) із Eclipse, спочатку потрібно змінити ярлик Add Bookmark у меню редагування в XCode
Chris R

@joshperry, що працює з Xcode 4+? DuplicateКоманда (в Edit -> Duplicate) , як видається, «завжди» неактивна (і не призначене для дублюючої лінії).
Блаз

Я використовував OS X з першого дня і ніколи не знав про ключові прив’язки. яка класна особливість. Погляньте на цей дуже приємний редактор прив’язок ключів GUI, з яким я трапився .
Алекс Грей

Більше інформації ви знайдете на сайті розробника Apple .
aleclarson

звучало чудово, але, схоже, це не спрацювало для мене в Xcode 5.0.2 :(
voghDev

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 :)
Ahti

2
'yank' має бути ctrl + Y на сучасних Macs.
CarmeloS

Command-V, щоб вставити його та повторно відступити. Контроль -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:

alt текст

У діалоговому вікні "Редагувати сценарії користувачів"

  1. Дублюйте сценарій "Переміщення лінії вниз" та перейменуйте його
  2. Скопіюйте файл "Move Line Down.scpt", перейменуйте сценарій, виберіть файл через (подвійне клацання) в редакторі сценаріїв
  3. Відредагуйте скрипт (відкриває "Редактор AppleScript") та видаліть уривок "delete (абзаци startLine через endLine)".
  4. Якщо ви не хочете перезапустити XCode, вам, здається, доведеться видалити та повторно додати скрипт. Будьте впевнені, що для "Виведення" встановлено значення "Відхилити вихід", інакше у вашому вихідному файлі з'явиться "(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 текст


2
Не згадані вище чітко, існують сценарії для видалення лінії, переміщення лінії вгору та переміщення лінії вниз. У прийнятій відповіді є недолік того, що він працює лише в тому випадку, якщо для ваших зв'язків ключів встановлено значення XCode Default. Використання скриптів дозволяє зберігати ваші спеціалізовані палітурки клавіш, оскільки зв'язки клавіш для сценаріїв обробляються окремо від решти XCode.
Збудник

7

Добре, тому я працював деякий час, а потім раптом він зламався. Тепер я поєднав з різних постів тут і знайшов рішення, яке працює для XCode 6.3.1.

  1. Перейдіть до програми /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Finder.

  2. знайти папку з назвою "Ресурси". Клацніть правою кнопкою миші, натисніть Отримати інформацію, розблокуйте налаштування спільного доступу та дозволів (Натискаючи на блокування) та встановіть його на Читання та запис для всіх.

  3. Введіть папку і знайдіть файл IDETextKeyBindingSet.plist. Клацніть правою кнопкою миші, натисніть Отримати інформацію, розблокуйте налаштування спільного доступу та дозволів (Натискаючи на блокування) та встановіть його на Читання та запис для всіх.

  4. Відкрийте файл за допомогою XCode (за замовчуванням)

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

  1. Запустіть XCode, перейдіть до налаштувань / прив'язок клавіш та шукайте «Видалити рядок». Встановити ярлик. Насолоджуйтесь.

6

Оскільки Xcode 4 ускладнює реалізацію за допомогою прив'язки клавіш, я вдався до використання клавіатури Maestro ( Quickeys теж повинен працювати добре, але це не повністю сумісно з Lion). Наприклад, ось мій комбінація клавіш 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

Потрійним клацанням миші виберіть весь рядок, команду-c виберіть та команду-v двічі для їх дублювання. Це не функція Xcode, це лише частина ОС.


2
Клацання миші і ще гірше, потрійніше? Це, звичайно, не є рішенням, яке люди, які хочуть використовувати комбінації клавіш, шукають.
Ixx

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 -> Key Cindings -> Text text -> Прокрутіть, поки не з’явиться дублювання
  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словника.


Hiya. Я не зовсім дотримуюся цього, документ pbxkey - це XML, тоді як описаний вище файл ~ / Library / KeyBindings / PBKeyBinding.dict повністю відрізняється від формату (трохи схожий на JSON). У документі pbxkeys немає кореневого / текстового запису. Це тому, що я використовую більш пізню версію?
Бен Клейтон

1

Три кроки для видалення поточного рядка (див. Занадто довго, але дуже швидко: D)

Cmd+ : перейти до кінця рядка
Cmd+ Delete: видалити до початку рядка
Delete: видалити порожній рядок


0

Для Xcode 6.1 потрапив до Xcode> Налаштування> Прив'язки клавіш> Текст І є "Видалити до кінця рядка" та призначити потрібний ключ.


0

Модуль для видалення рядків XCodePlus - це XCode, який робить це для вас. Він був попередньо встановлений разом із менеджером пакунків Alcatraz ...

https://github.com/payliu/XcodePlus


0

Досі не існує вбудованого способу дублювання рядків, як у Xcode 9. І прив’язки до спеціальних ключів, схоже, мають проблеми.

Оновлення: Xcode 10.0 beta 6 (10L232m) те саме.


0

Перейдіть за цією адресою:

/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet

а потім скопіюйте файл IDETextKeyBindingSet.plist кудись, а потім відкрийте скопійований файл та вставте

selectLine :, Копіювати :, Вставити :, Вставити: як на цьому малюнку сюди введіть опис зображення та збережіть його та замініть скопійований файл за цією адресою /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.