Исходя из Eclipse и все время использовавшегося для дублирования строк, довольно странно узнать, что Xcode не имеет такой функции. Или нет?
Я знаю, что можно изменить общесистемные сочетания клавиш, но это не то, что мне нужно.
Исходя из Eclipse и все время использовавшегося для дублирования строк, довольно странно узнать, что Xcode не имеет такой функции. Или нет?
Я знаю, что можно изменить общесистемные сочетания клавиш, но это не то, что мне нужно.
Ответы:
Все дело в том, чтобы НЕ использовать ярлыки 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
Duplicate
(in Edit -> Duplicate
) кажется «всегда» неактивной (и не предназначена для дублирования строки).
Чтобы удалить строку : Ctrl-A перейти в начало строки, затем Ctrl-K удалить ее, а в другой раз Ctrl-K удалить пустую строку. (Я не использую Xcode очень часто, но я привык к этому в Emacs и других текстовых вводах с привязками, подобными Emacs, и, похоже, это работает и в Xcode.)
И чтобы продублировать строку : я не знаю многих программ, в которых есть команда для этого, но обычно я просто использую Copy + Paste - в Xcode это похоже на CUA: Ctrl+A для перехода в начало строки, Shift+↓ для выбора это, Command + Cдля копирования и Command + * 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:
Перезапустите Xcode и откройте Xcode> Настройки> KeyBindings. Найдите свой макрос и определите комбинацию клавиш:
Я попробовал решение для привязки клавиш, но не смог заставить его работать. Однако редактирование моих привязок клавиш XCode работает как шарм. Вот как я это сделал.
Это решение не изменяет содержимое буфера обмена!
Откройте привязки клавиш XCode:
В диалоговом окне редактирования пользовательских сценариев:
Повторяющаяся очередь:
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
Хорошо, у меня это работало какое-то время, а потом внезапно сломалось. Теперь я объединил здесь разные сообщения и нашел решение, которое работает для XCode 6.3.1.
Перейти с /Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/
помощью Finder.
найдите папку с именем Resources. Щелкните его правой кнопкой мыши, нажмите «Получить информацию», разблокируйте настройку общего доступа и разрешений (нажав на замок) и установите для всех значение «Чтение и запись».
Войдите в папку и найдите файл IDETextKeyBindingSet.plist. Щелкните его правой кнопкой мыши, нажмите «Получить информацию», разблокируйте настройку общего доступа и разрешений (нажав на замок) и установите для всех значение «Чтение и запись».
Откройте файл с помощью XCode (по умолчанию)
Найдите удаления, щелкните правой кнопкой мыши и добавьте новую строку. Назовите его, например, Удалить строку. В поле значения введите: selectLine:, deleteBackward:
. (Это также может быть сделано для дублирования строки: selectLine:,copy:,moveToEndOfLine:,insertNewline:,paste:,deleteBackward:
)
Поскольку Xcode 4 затрудняет реализацию с использованием привязок клавиш, я прибег к использованию Keyboard Maestro ( Quickeys тоже должен работать хорошо, но он не полностью совместим с Lion). Например, вот мой ярлык Keyboard Maestro (привязанный к ⌘-⇧-D):
Чтобы удалить строку в Xcode 10.1, следуйте инструкциям на снимке экрана ниже, чтобы добавить горячую клавишу.
Я знаю, что этот поток довольно старый, но я нашел другое решение, используя BetterTouchTool , вы можете выполнить последовательность Ctrl+ A, Ctrl+ K, Ctrl+ Kодним ярлыком, настроив так в BTT:
(Используйте кнопку «Добавить дополнительное действие», чтобы добавить второй и третий ярлыки)
PS: Исходя из Eclipse, где Cmd+ D- это строка удаления ^^
Трижды щелкните, чтобы выделить всю строку, command-c, чтобы выбрать, и command-v, дважды, чтобы скопировать ее. Это не функция Xcode, это просто часть ОС.
Используйте пользовательские скрипты.
Еще есть скрипты для перемещения и удаления строк. Вам необходимо определить привязки клавиш для этих сценариев (меню « Сценарии» -> « Изменить пользовательские сценарии ...» в xCode 3.2).
Чтобы продублировать строку, вы должны написать собственный скрипт. Но это очень просто! Дублируйте сценарий «Переместить строку вниз» и удалите строку, удаляющую выделенный текст:
delete (paragraphs startLine through endLine)
Мы используем Xcode 9.0, и сочетания клавиш все еще не работают. Вздох.
Я нашел эту суть очень полезной, поэтому разместите ее здесь для использования в будущем:
/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist
</dict>
<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. Вы можете просто использовать расширение Xcode Linex
Решение от damien.flament отлично работает, и вам может потребоваться установить для вывода значение «Отменить вывод», см. Рис. Ниже.
PS: Не знаю, как прокомментировать его ответ.
Как было сказано выше, близко 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
Это возможно с помощью BetterTouchTool . CMD + D дублирует строку. Создайте новый ярлык, например:
Используйте кнопку "Добавить дополнительное действие", чтобы добавить второй и третий ярлыки.
Если вы уже настроили свои Xcode клавиш, вы должны отредактировать файл: ~/Library/Application Support/Xcode/Key Bindings/<user>.pbxkeys
. Просто добавьте в Root/text
словарь два массива (описанных выше) .
Плагин удаления строки XCodePlus - это XCode, который делает это за вас. Он был предварительно установлен с менеджером пакетов Alcatraz ...
По-прежнему нет встроенного способа дублирования строк, как в Xcode 9. И пользовательские привязки клавиш, похоже, имеют проблемы.
Обновление: Xcode 10.0 beta 6 (10L232m) такой же.
Перейдите по этому адресу:
/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, перейдите на вкладку привязки клавиш, найдите повторяющуюся строку (настроенную) и определите для нее короткий ключ, как на изображении ниже