Xcode: Удалить строку горячей клавиши - PullRequest
17 голосов
/ 25 января 2009

Я ищу способ сопоставить некоторые горячие клавиши для «удаления строки, на которой находится мой курсор» в XCode. Я нашел «удалить до конца строки» и «удалить до начала строки» в привязках текстовых клавиш, но мне не хватает, как полностью удалить строку независимо от того, что я выбрал. TextMate имеет эту функциональность, сопоставленную с Ctrl + Shift + D, и я хотел бы, чтобы то же самое, если это возможно. Есть идеи?

Ответы [ 8 ]

30 голосов
/ 26 января 2009

Спасибо за помощь, Эшли. После некоторых экспериментов я сопоставил свои любимые команды TextMate (дублирующая строка, удаляемая строка). Я создал файл ~ / Library / KeyBindings / PBKeyBinding.dict и добавил следующее:

{
    "^$K" = (
        "selectLine:",
        "cut:"
    );
    "^$D" = (
        "selectLine:",
        "copy:",
        "moveToEndOfLine:",
        "insertNewline:",
        "paste:"
    );
}

Добавленный «deleteBackward:» создает резервную копию одной строки после удаления содержимого строки. Возможно, вы также можете просто использовать "selectLine:".

14 голосов
/ 25 января 2009

Вы можете настроить общесистемный файл привязки ключей, который будет применяться ко всем приложениям Cocoa.

Чтобы делать то, что вы хотите, оно должно выглядеть так:

В вашей домашней папке, Library / KeyBindings / DefaultKeyBinding.dict

{
    "^D" = (
        "moveToBeginningOfLine:",
        "deleteToEndOfLine:",
    );
}

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

11 голосов
/ 19 ноября 2011

Поскольку я не всегда работаю с одним и тем же xcode, я предпочитаю не устанавливать скрипты.

Xcode использует некоторое подмножество команд emacs. Я использую этот подход, чтобы быстро удалить строку. ^ k (control-k) удаляет курсор от конца строки. Двойное выполнение также удаляет возврат каретки и занимает следующую строку. ^ а приведет вас к началу строки.

Таким образом, чтобы удалить полную строку с начала, вы можете использовать ^ a ^ k ^ k.

8 голосов
/ 04 апреля 2010

Я искал решение этой проблемы и попробовал Эшли Кларк, но оказалось, что есть более простой вариант с использованием входящего в комплект пользовательского сценария, который называется delete Line.

  • Откройте странное меню слева от «справки», которое выглядит как свиток.
  • Выберите Изменить пользовательские сценарии ...
  • Перейдите на вкладку «Привязки клавиш»
  • Развернуть текстовый раздел
  • Дважды щелкните столбец next рядом с «Удалить строку» и введите горячую клавишу. Он может предупредить вас, что вы украли его у какой-то другой команды, но это нормально.

Готово! Вы можете сделать то же самое для Move Line Up и Move Line Down, если вы любитель Eclipse, как я.

3 голосов
/ 31 октября 2014
<key>Custom Keyword Set</key>
<dict>
 <key>Delete Current Line In One Hit</key>
     <string>moveToEndOfLine:, deleteToBeginningOfLine:, deleteToEndOfParagraph:</string>
</dict>

Я предлагаю создать свой собственный диктонар в вашем файле IDETextKeyBindingSet.plist .

Итак:

  • закрыть Xcode;
  • открыть терминал;
  • sudo nano /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Resources/IDETextKeyBindingSet.plist
  • добавить новый пользовательский раздел, например код сверху;
  • сохранить, выйти и открыть Xcode;
  • [Xcode> Предпочтения> Связывание клавиш]
  • выполните поиск «Удалить ..» и создайте новый ярлык.
0 голосов
/ 17 июня 2017

Для Xcode 9.0 (бета) вставка настроенного словаря ключей в IDETextKeyBindingSet.plist работает нормально для меня. Вам нужно перезапустить XCode, если он уже открыт, и после следующего запуска вы найдете новые настраиваемые сочетания клавиш в меню KeyBindings.

<key>Customized</key>
<dict>
    <key>Delete Rest Of Line</key>
    <string>deleteToEndOfLine:</string>
    <key>Delete Line</key>
    <string>moveToBeginningOfLine:, deleteToEndOfLine:</string>
    <key>Duplicate Current Line</key>
    <string>selectLine:, copy:, moveToEndOfLine:, insertNewline:, moveToBeginningOfLine:, paste:</string>
</dict>
0 голосов
/ 09 января 2016

Если у вас возникли проблемы в современном Xcode (которым я был), решение для этого в Xcode 7.2 состоит в том, чтобы сделать то, что Opena упомянул здесь со скриншотами или в текстовой форме через ответ Velthune . Поскольку я хотел более прямую команду, я упростил команду до:

selectLine:, delete:, moveToBeginningOfLine:

Конечно, в «Настройках XCode» >> «Привязки клавиш» вы можете просто найти команду, дважды щелкнув ее под столбцом «Ключ», и назначить ей собственную привязку Ctrl + Shift + D.

Вот скриншот того, что у меня получилось

0 голосов
/ 01 сентября 2012

Это работает для меня (Xcode 4.4.1):

Те же шаги, что описаны здесь: Xcode дублирующаяся строка (ответ Галлея)

Но вместо:

selectLine :, copy :, moveToEndOfLine :, insertNewline :, paste :, deleteBackward:

Использование:

selectLine :, moveToBeginningOfLine :, deleteToEndOfLine:

...